CURL PHP 不适用于 WAMP 和 XAMPP

CURL PHP not working on WAMP and XAMPP

我有这个简单的 php 脚本:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.instagram.com/zuck/'); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$output = curl_exec($ch); 

curl_close($ch);

echo htmlspecialchars($output);

我有 Apache 2.4.17,PHP : 5.6.16(我也试过 PHP 7) 我已经在远程主机服务器上尝试 运行 它并且它按预期工作。但是它在我的电脑上根本不起作用。 我尝试了 WAMP,XAMPP,禁用防火墙,直接连接到我的调制解调器(没有路由器),检查了 php.ini 和 c_url 未注释。我还尝试从 http://www.anindya.com/ 下载修复程序。效果不佳。当我尝试 curl_version 时它起作用了(所以我猜 c_url 已加载)但是这个脚本没有。奇怪的是没有错误只是一个空白页。 我真的没有更多的排错思路

经过一些测试我发现了问题:

首先我检查了脚本本身的错误:

echo curl_error($ch)

它返回了这个:

SSL certificate problem: unable to get local issuer certificate

原来我不得不禁用 SSL 证书验证,因为我尝试过的所有网站都使用 SSL(例如 instagram、google 等)

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)

此问题已标记为已回答,但对于以后看到此问题的人来说,@amphetamachine 的评论很重要。将 CURLOPT_SSL_VERIFYPEER 设置为 false 不是一个好主意。它可以在您的本地服务器上运行,但您真的想要在远程服务器上运行吗?

我建议您将证书颁发机构文件的绝对路径添加到您的 php.ini 文件中,而不必记住在生产环境中注释掉这一行(或使其以环境为条件)将已经取消注释 cURL 扩展名)。

curl.cainfo ="your absolute local path\cacert.pem"

如果您没有此文件,可以 downloaded

这样您的本地测试系统就可以工作,并且您不会损害您的生产设置。

您可以在 cURL 选项中设置路径 CURLOPT_CAPATH 但同样您不希望在生产代码中使用此路径。