You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows下WAMP环境PHP7.3.12无法识别php.ini中curl.cainfo配置

解决WAMP环境下PHP7.3.12 curl.cainfo配置不生效的问题

你已经做了大部分正确的操作,但WAMP的多配置文件特性很容易让人踩坑,我来帮你梳理几个关键排查点,搞定这个配置不生效的问题:

1. 确认WAMP加载的是正确的php.ini

你提到通过php_ini_loaded_file()看到了配置,但WAMP里存在多个php.ini文件,很容易搞混:

  • Apache运行时用的是C:\dev\wssp\wamp\bin\apache\apache2.4.41\bin\php.ini(你修改的这个)
  • PHP CLI模式用的是C:\dev\wssp\wamp\bin\php\php7.3.12\php.ini
  • 还有同步生成的phpForApache.ini

验证步骤
在浏览器里访问你的phpinfo页面,找到Loaded Configuration File这一项,确认它指向的是不是你修改的Apache目录下的php.ini。如果不是,说明你之前修改的文件没被WAMP加载——一定要通过WAMP右键菜单(WAMP图标 > PHP > php.ini)打开配置文件,这个入口会直接指向当前生效的那个文件。

2. 补充配置openssl.cafile(PHP7.1+必加)

PHP7.1及以上版本,除了curl.cainfo,还需要配置openssl.cafile才能让全局SSL验证生效,Guzzle这类HTTP库会依赖这个配置。在同一个php.ini文件里添加或修改:

openssl.cafile = "C:\dev\wssp\wamp\bin\php\php7.3.12\extras\ssl\cacert.pem"

注意去掉前面的分号注释,路径要和curl.cainfo完全一致。

3. 检查cacert.pem的文件权限

Windows下如果文件权限不足,PHP进程可能无法读取这个证书文件。右键cacert.pem > 属性 > 安全标签,确认运行Apache的用户(通常是SYSTEM或者你的登录用户)拥有读取权限。如果没有,添加读取权限后再操作。

4. 完全重启WAMP服务

别只重启Apache,完全退出WAMP(右键图标 > 退出),然后重新打开WAMP,等所有服务都启动完成。这样能确保PHP和Apache都彻底重新加载了配置文件,避免缓存的旧配置干扰。

5. 验证配置是否生效

重启后,再去看phpinfo页面,搜索curl.cainfoopenssl.cafile,确认它们已经显示正确的路径。然后在Laravel项目里去掉Guzzle的verify参数,测试HTTP请求是否正常工作。

额外排查:CLI模式验证

如果浏览器端还是不生效,试试在命令行里验证:打开CMD,切换到PHP目录:

cd C:\dev\wssp\wamp\bin\php\php7.3.12
php -r "echo ini_get('curl.cainfo') . PHP_EOL; echo ini_get('openssl.cafile') . PHP_EOL;"

如果CLI能输出正确路径,但浏览器的phpinfo看不到,说明Apache加载的php.ini和CLI的不是同一个,回到第一步确认WAMP菜单打开的是正确的配置文件。


内容的提问来源于stack exchange,提问作者Pøziel

火山引擎 最新活动