小编mer*_*ial的帖子

PHP忽略了php.ini中的curl.cainfo设置(显然)

我正在尝试在Windows服务器(运行IIS)上修复php_curl调用,该服务器返回熟悉的错误"SSL证书问题,验证CA证书是否正常.详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败".

正如这里的许多相关问题所详述,我下载了http://curl.haxx.se/ca/cacert.pem,将其移至我服务器的硬盘,并将curl.cainfo设置添加到我的php.ini:

curl.cainfo = "C:\path\to\cacert.pem"
Run Code Online (Sandbox Code Playgroud)

没什么,仍然得到同样的错误.但是,在PHP代码中指定路径会导致响应成功!

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CAINFO, "C:\path\to\cacert.pem");
$response = curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

这确实给了我一个我现在可以使用的解决方法,但是我在很多地方使用php_curl调用维护一个大型应用程序,所以在php.ini中指定一次这个设置会更合乎逻辑,所以它适用于所有的php_curl调用应用程序.

潜在的愚蠢错误检查:

  1. 我正在php.ini编辑之间重启IIS
  2. 我知道我正在编辑正确的php.ini,因为"echo ini_get('smtp_port');" 反映我对该设置所做的更改(仅为测试更改非关键设置)
  3. 我知道IIS可以读取文件,因为它在使用curl_setopt()(上面)设置时可以正常工作

试图直接查看ini设置表明PHP似乎对它一无所知(我这样做是对的吗?):

var_dump(ini_get('curl.cainfo'));

==> bool(false)
Run Code Online (Sandbox Code Playgroud)

任何想法为什么PHP不会读取curl.cainfo设置?

php iis ssl curl

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

curl ×1

iis ×1

php ×1

ssl ×1