php环境成功需四者就位:解释器、配置文件、扩展、web集成;用php -v和php -r验解释器,php --ini查php.ini是否加载,php -m和php -i验证扩展,phpinfo()闭环确认web集成。

能直接执行 php -v 且看到版本号,只是说明 CLI 可用;真正验证「独立运行环境」是否搭好,必须确认 PHP 解释器、配置文件、扩展、Web 集成四者同时就位——缺一不可。
用 php -v 和 php -r 快速验核解释器
这步排除编译失败或 PATH 错乱。但注意:php -v 显示的路径可能不是你刚装的那个——尤其当你系统里有多个 PHP(比如 macOS 自带的、Homebrew 装的、源码编译的)。
建议直接用绝对路径测试,比如源码装在 /usr/local/bin/php,就跑:/usr/local/bin/php -v 和 /usr/local/bin/php -r "echo 'CLI OK';"。
常见错误:Command not found 是 PATH 没加对;Segmentation fault 多因 configure 时漏了关键依赖(如 libxml2);PHP Warning: PHP Startup: Unable to load dynamic library 表示扩展路径或 so 文件权限不对。
靠 php --ini 确认 php.ini 是否加载成功
很多问题表面是扩展没启用,根子其实是 php.ini 根本没加载。运行 php --ini 后,重点看 Loaded Configuration File 这一行:
• 如果显示 (none),说明 PHP 在裸跑,所有 extension= 都无效;
• 如果路径存在但内容为空或被注释掉,要检查是否复制错了文件(源码安装后需手动把 php.ini-development 或 php.ini-production 改名复制过去);
• Windows 下注意路径分隔符是反斜杠,extension_dir = "ext" 要和实际 php.exe 所在目录结构匹配。
通过 php -m 和 php -i | grep -i mysqli 查扩展真实状态
php -m 列出的是已成功加载的模块,不是 php.ini 里写了就等于启用了。比如你启用了 mysqli,但 php -m 里没有它,大概率是:
• extension=mysqli 写在了错误的 ini 文件里(CLI 和 Web SAPI 加载的配置文件可能不同);
• mysqli.so(Linux/macOS)或 php_mysqli.dll(Windows)文件不存在或权限为 000;
• 依赖库缺失(如 mysqli 依赖 libmysqlclient,没装或路径不在 LD_LIBRARY_PATH)。
用 php -i | grep -i mysqli 可以看到更细的信息,包括是否注册了函数、默认端口、socket 路径等——这些才是 Web 请求真能连上数据库的前提。
浏览器访问 phpinfo() 是唯一能闭环验证 Web 集成的方式
命令行全通 ≠ Web 能跑。Apache/Nginx + PHP-FPM 或 CGI 的链路更长:请求进来 → Web 服务器转发 → PHP 进程解析 → 返回 HTML。其中任一环断开,localhost/test.php 就会 500、空白页或直接下载文件。
务必新建一个 test.php,只写 <?php phpinfo(); ?>,放在 Web 根目录下(别用 IDE 内置服务器,那不是真实集成环境);
打开浏览器访问后,重点检查:
• 页面顶部的 PHP Version 是否和 php -v 一致;
• “Server API” 行是不是 apache2handler 或 fpm-fcgi,而不是 cli;
• “Loaded Configuration File” 路径是否和 php --ini 输出的一致;
• “Scan this dir for additional .ini files” 下有没有你加的自定义配置目录。
如果这里不一致,说明 Web 和 CLI 用的根本不是同一套配置,后续调扩展、改 upload_max_filesize 全是白忙。
最容易被忽略的点:Web 服务器和 CLI 的 PHP 配置文件可能完全不同,而 phpinfo() 是唯一能暴露这个差异的镜子。别跳过它,哪怕你已经看到 php -v 成功了三次。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











