必须用phpinfo()确认Web环境实际加载的php.ini路径,而非仅依赖php --ini;CLI与Web环境配置文件不同,常见错误是改错文件或未重命名php.ini-development。

确认当前 PHP 实际加载的 php.ini 路径
很多“扩展不匹配”问题其实根本没走到版本校验那步,而是改错了配置文件。运行 php --ini,看输出中 Loaded Configuration File 的路径——这才是 CLI 真正读的;Web 环境(如 Apache 或 php-fpm)可能用另一份,必须单独查 phpinfo() 页面确认。Windows 下常见错误是编辑了 php.ini-development 却没重命名为 php.ini,或把配置写进了被忽略的备份文件里。
检查 extension_dir 是否为绝对路径且可访问
extension_dir 必须写成绝对路径,结尾不加斜杠,例如 "C:/php/ext"(正斜杠更安全,避免反斜杠转义)。路径中不能含中文、空格或括号;若必须含空格,整个值要用英文双引号包裹,如 extension_dir="C:/Program Files/php/ext"。改完后立即验证:php -r "echo ini_get('extension_dir');",输出必须和配置值完全一致,且该目录下真实存在你要启用的 DLL 文件(如 php_curl.dll)。
验证 PHP 主程序、扩展 DLL、VC 运行库三者是否对齐
Windows 下失败主因是这三者位数与编译器版本错配:
- x64 PHP 只能加载 x64 扩展,x86 与 x64 混用必报错
- VC 版本必须一致:PHP 8.1 官方 ZIP 多为 vs16(VS2019),就不能用 vs17(VS2022)编译的 DLL
- 系统需安装对应 VC 运行库:比如报
VCRUNTIME140.dll 14.38 is not compatible,说明 PHP 需要 14.42,应装最新版 Microsoft Visual C++ Redistributable for Visual Studio 2015–2022 (x64),而非降级 PHP
右键 php.exe → 属性 → 详细信息,看“原始文件名”和“文件版本”;再用 sigcheck -a php.exe 确认架构与链接的 VC 版本。
立即学习“PHP免费学习笔记(深入)”;
用 Dependencies.exe 检查 DLL 依赖完整性
即使 php -m 显示扩展已加载,new Curl() 仍可能失败——因为扩展依赖的底层 DLL 缺失。用 Dependencies.exe(不是旧版 Dependency Walker)打开你的 php_curl.dll,看是否有红色高亮项。典型缺失包括 libssh2.dll、ssleay32.dll、libeay32.dll。这些文件必须放在 php.exe 所在目录,或确保该目录已加入系统 PATH。不要复制到 System32,也不要在不同 PHP 版本间复用这些依赖文件。



















