如何为 PHP 全局设置CURLOPT_CAINFO?

2022-08-30 17:33:00

我知道我可以在任何特定实例上设置该选项,但是我真正想要的是设置php.ini或类似的地方,以便在所有项目和所有实例中处理此问题。

有谁知道我完成这项工作的方法吗?

编辑:我对一个解决方案特别感兴趣,该解决方案将允许证书位于不同服务器上的不同位置。

我正在一台需要它的Windows机器上进行开发,但部署到Linux服务器,该服务器不仅不需要它,甚至没有指示路径。

我知道我可以使用条件来检查代码的运行位置,但更愿意让它开箱即用。在我看来,这确实是curl和PHP要处理的问题,而不是我的代码,因此它的设置属于那里。


答案 1

我在这里找到了答案(在用户说明中):http://php.net/manual/en/function.curl-setopt.php

只需将其添加到.ini(注意:您不能使用,尽管我不知道您为什么想要这样做。谢谢@Carlton):ini_set

curl.cainfo=c:\php\cacert.pem

并从以下位置获取该文件:http://curl.haxx.se/docs/caextract.html

工作正常,并且您不会对MITM攻击敞开心扉


答案 2

这是一个补丁,用于“模拟”我们在构建时发现有效的crt数据时在linux上看到的内容(几乎所有发行版都是这种情况):

http://www.php.net/~pierre/patches/curl_cacert_default.txt

它添加了一个(系统)ini设置来定义cacert的路径,curl.cainfo=c:\curl\ca.crt

可以在此处获取 cacert 数据:http://curl.haxx.se/docs/caextract.html

php 5.3 的 DLL 可以在这里找到:php 5.2 的 dll http://www.php.net/~pierre/test/curl-5.3-vc9-x86-ts-nts-cainfodefault.zip 可以在这里找到:http://www.php.net/~pierre/test/curl-5.2-cainfodefault.zip

请让我知道它是如何工作的。


推荐