我目前正在开发一个项目,该项目在同一服务器上对我的 API 进行 ajax 调用。一切都很顺利,直到几个小时前,cURL突然无缘无故停止工作,并给出了以下错误
Protocol https not supported or disabled in libcurl
Run Code Online (Sandbox Code Playgroud)
但这没有任何意义,因为它早些时候工作过,我唯一改变的是登录屏幕中的某些内容(仅 PHP)和服务器上的时区从默认为“欧洲/柏林”
dpkg-reconfigure tzdata
[php.ini] date.timezone = "Europe/Berlin";
Run Code Online (Sandbox Code Playgroud)
我已经重新启动了 apache2,重新启动了服务器,检查了 php.ini 文件和我的 phpinfo,一切都一样,没有任何错误或更改,但curl 无法工作。我尝试卷曲其他主机和本地主机,但没有任何效果。我还检查了/var/mail/root,没有任何错误。
我的服务器的信息很少
这就是我正在使用的 cURL 代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, count($params));
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
session_write_close();
$result = curl_exec($ch);
curl_close($ch);
session_start();
Run Code Online (Sandbox Code Playgroud)
就像我说的,它运行良好,没有任何问题超过 1 个月。这是我见过的最奇怪的事情。我希望有人能帮助我。如果没有,有什么好的替代curl的方法吗?(POST 请求)
提前致谢!
感谢大家的帮助,但我发现了错误。问题如下:
curl不适用于 https 协议,因为库文件夹中存在损坏的链接/文件。如果curl 不适合您,请检查curl --version是否收到以下错误:
curl: /usr/local/lib/libcurl.so.4: no version information available (required by curl)
Run Code Online (Sandbox Code Playgroud)
如果是,请转到/usr/local/lib并删除这两个libcurl链接/文件。这为我解决了问题。之后只需重新启动 apache2 即可再次工作。
请注意,这仅解决了我的问题,而不是全局解决问题。因此,请注意您在服务器上删除的内容。务必做好备份!