在调试新的网站系统的时候遇到一个问题。就是在调用curl_exec()后出现502。然后马上编写了一个测试脚本:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.baidu.com');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$res = curl_exec($ch);
print_r($res);
exit;

发现,只要链接是https的,必然出现段错误,这也是导致502的原因。而http链接可以正常访问。

是从这里找到解决问题的方法的:

https://bugs.php.net/bug.php?id=76416

也有人出现了相同的问题,官方提示说是系统curl使用的ssl库和php编译时使用的ssl库(opsnssl)不一至导致的。然后我查找了phpinfo信息,发现php使用的curl版本以及它使用的ssl库(openssl)版本:
279256726-5bfc72050eaa2.png

然后查看PHP编译时的openssl版本:
1567871581-5bfc72aa393a7_articlex.png
这两个软件的openssl版本明显不一致,所以,下一步就是要么从新编译PHP,使用系统的openssl版本1.1.0g,要么重新编译安装curl,使用openssl版本1.0.2o。

最后修改:2022 年 02 月 10 日
如果觉得我的文章对你有用,请随意赞赏