CURL PHP无法使用WAMP和XAMPP

时间:2016-06-17 13:02:06

标签: php apache xampp wamp

我有这个简单的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已加载),但这个脚本没有。奇怪的是,只有空白页面没有错误。 我真的没有更多的故障排除想法

2 个答案:

答案 0 :(得分:2)

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

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

echo curl_error($ch)

返回了这个:

SSL certificate problem: unable to get local issuer certificate

原来我必须禁用SSL证书验证,因为我尝试过的所有网站都使用SSL(例如Instagram,谷歌等)

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)

答案 1 :(得分:1)

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

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

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

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

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

您可以在cURL选项CURLOPT_CAPATH中设置路径,但在生产代码中也不会想要这样。