CURL PHP 不适用于 WAMP 和 XAMPP
Posted
技术标签:
【中文标题】CURL PHP 不适用于 WAMP 和 XAMPP【英文标题】:CURL PHP not working on WAMP and XAMPP 【发布时间】:2016-10-19 07:59:14 【问题描述】:我有这个简单的 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 已加载)但这个脚本没有。奇怪的是没有错误只是一个空白页。
我真的没有更多的故障排除想法
【问题讨论】:
在上面的代码中在<?php
之后添加error_reporting(E_ALL);ini_set('display_errors',1);
并检查错误
你检查你的 apache error.log 了吗?
检查php_info curl是否启用
我尝试了您的两个答案,但页面上仍然没有任何内容,任何日志文件中都没有与 curl 相关的内容。 php_error.log 中唯一的内容是与 [17-Jun-2016 13:09:20 UTC] PHP Warning: unlink(D:/wamp/bin/apache/apache2.4.17/bin/icudt54.dll): Permission denied in D:\wamp\scripts\wampserver.lib.php on line 78
类似的多行内容
我已经签入了 php_info() 并且它已启用 cURL support enabled cURL Information 7.42.1
【参考方案1】:
经过一番测试,我发现了问题:
首先我检查了脚本本身的错误:
echo curl_error($ch)
返回这个:
SSL certificate problem: unable to get local issuer certificate
原来我不得不禁用 SSL 证书验证,因为我尝试过的所有网站都使用了 SSL(例如 instagram、google 等)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)
【讨论】:
【参考方案2】:此问题已标记为已回答,但对于以后看到此问题的人来说,@amphetamachine 的评论很重要。将 CURLOPT_SSL_VERIFYPEER 设置为 false 不是一个好主意。它可以在您的本地服务器上运行,但您真的希望它在远程服务器上运行吗?
我建议您在您的 php.ini 文件中添加证书颁发机构文件的绝对路径(您已经取消注释的位置),而不是必须记住注释掉该行以用于生产(或使其以环境为条件) cURL 扩展名)。
curl.cainfo ="your absolute local path\cacert.pem"
如果您没有此文件,则可以是 downloaded。
这样您的本地测试系统就可以正常工作,并且不会影响您的生产设置。
您可以在 cURL 选项 CURLOPT_CAPATH 中设置路径,但您也不希望在生产代码中使用此路径。
【讨论】:
以上是关于CURL PHP 不适用于 WAMP 和 XAMPP的主要内容,如果未能解决你的问题,请参考以下文章
为啥 mail() PHP 函数不适用于 WAMP 默认安装?
为啥 mail() PHP 函数不适用于 WAMP 默认安装?
PHP curl 不适用于 Windows 和 Apache