新手怎样验证php源码安装成功_用phpinfo与简单脚本检测【教程】

6次阅读

php源码安装成功需三步验证:先用php -v确认CLI运行,再通过phpinfo()检查Web SAPI与扩展加载,最后用最小脚本验证环境逻辑;关键要确保php.ini路径正确且CLI/FPM配置同步。

新手怎样验证php源码安装成功_用phpinfo与简单脚本检测【教程】

PHP 源码安装成功与否,不能只看 make install 是否报错——得让 PHP 真正跑起来,且输出你可控的内容。最直接的验证方式就两个:php -v 看基础运行,phpinfo() 看模块与配置全貌,再加一个最小脚本排除 Web 服务器干扰。

确认 CLI 模式下 PHP 可执行

这是第一道门槛。源码安装后,php 命令可能不在 /usr/bin/usr/local/bin,而是在你指定的 --prefix 路径下(比如 /usr/local/php)。常见错误是直接敲 php -vcommand not found

  • 先查安装路径:进入源码目录执行 make install 后,检查 --prefix 参数值,比如 --prefix=/usr/local/php,那二进制文件就在 /usr/local/php/bin/php
  • 临时测试:运行 /usr/local/php/bin/php -v,应输出版本号和已编译模块(如 cli, curl
  • 若要全局可用,把 /usr/local/php/bin 加进 $PATH(改 ~/.bashrc/etc/profile),然后 source 并重新登录终端
  • 注意:别用 which php 判断——它可能返回系统旧版 PHP,要用 type -a php 查所有匹配项

phpinfo() 检查 Web SAPI 与扩展加载情况

phpinfo() 不只是“显示一信息”,它是唯一能确认 apache/nginx 是否真正调用到你刚编译的 PHP、以及 GD/curl/openssl 等扩展是否被正确启用的方式。很多新手卡在这步,以为 CLI 能跑就等于 Web 能跑。

  • 在 Web 服务器文档根目录(如 /var/www/html)下新建 test.php,内容仅一行:
  • 确保 Web 服务器已配置好 PHP SAPI(Apache 需 LoadModule php_module + AddHandler;Nginx 需 fastcgi_pass 指向 php-fpm 进程)
  • 浏览器访问 http://localhost/test.php,重点核对三处:
    – “Loaded Configuration File” 是否指向你编译时指定的 php.ini(如 /usr/local/php/lib/php.ini
    – “Server API” 显示 Apache 2.0 HandlerFPM/FastCGI,而非 CLI
    – 找到你关心的扩展名(如 mysqli, opcache),确认其状态为 enabled
  • 如果页面空白或 500 错误:检查 Web 服务器错误日志,大概率是 php-fpm 没启、socket 路径不对,或 php.iniextension_dir 指向了错误的 modules 目录(应为 /usr/local/php/lib/php/extensions/no-debug-non-zts-20220829/ 这类带 ts/zts 标识的子目录)

写个最小脚本绕过 Web 服务器验证逻辑执行

有时候 phpinfo() 能跑,但业务代码出问题,可能是 open_basedirdisable_functions 或时区设置等细节被忽略。一个不依赖任何扩展的脚本,能快速定位是不是环境本身的问题。

立即学习PHP免费学习笔记(深入)”;

  • 新建 hello.php,内容:
  • 在 CLI 下运行:/usr/local/php/bin/php hello.php → 应输出当前时间
  • 在 Web 下访问该文件 → 时间必须和服务器系统时间一致(可比对 date 命令),否则说明 date.timezone 未在 php.ini 中设置,或设置错误(如写成 Asia/Shanghai 而非 Asia/Shanghai —— 实际这个是对的,但常有人拼错成 ShangHai 或漏掉斜杠)
  • 如果 CLI 正常但 Web 下报 Warning: Unknown: failed to open stream,基本是 Web 服务器用户(如 www-data)没有读取该 PHP 文件的权限,不是 PHP 安装问题

源码安装最易被忽略的点,其实是 php.ini 的位置和内容——php -v 不读它,phpinfo() 才读;而很多人只改了 CLI 的 php.ini,却没同步改 FPM 的配置。验证时务必盯住 phpinfo() 页面顶部那行 “Loaded Configuration File”。

text=ZqhQzanResources