从PHP 5.4升级到5.5后,curl_exec返回false

4

我把 php 版本从 5.4 升级到了 5.5。升级后,php 的 curl_exec 函数开始返回 false。php 5.5 关于 curl 选项的文档中有哪些变化吗?我在文档中没有找到任何信息。

        $ch = curl_init();
        curl_setopt( $ch, CURLOPT_POST, 1 ); 
        curl_setopt( $ch, CURLOPT_HEADER, 0 ); 
        curl_setopt( $ch, CURLOPT_URL, self::URL ); 
        curl_setopt( $ch, CURLOPT_POSTFIELDS, $postData );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );  
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt( $ch, CURLOPT_TIMEOUT, 90 );
        $data = curl_exec( $ch );

PHP版本:5.5.14-2

注意:我在Vagrant Box上出现了此错误。


你正在使用哪个 PHP 版本? - gries
你试过使用true而不是1作为CURLOP_RETURNTRANSFER的参数吗? - gries
VargantBox 上安装了 curl 吗?PHP 安装中是否启用了它? - Borislav Sabev
在一个空的 .php 文件中查看您的 php.ini phpinfo(),并查看 Curl 是否已启用。您是在 Windows 上进行此操作吗? - Eddwin Paz
你可以尝试检查特定传输的信息 var_dump(curl_getinfo($ch));。参考链接:http://php.net/manual/zh/function.curl-getinfo.php - samazi
显示剩余3条评论
1个回答

1

我最近也在一个vagrant盒子上进行了类似的php升级,上面的代码片段在我的测试中似乎可以正常工作。

可能不是升级后curl出现问题,而是升级对传递给curl的数据产生了影响。无论是self::URL还是$postData的构建方式 - 它们是否仍然包含您期望看到的数据?

如果这些变量仍然像您期望的那样填充,那么您可以通过使用curl_getinfo, curl_errnocurl_error从curl本身获取有关curl_exec期间发生了什么错误的更多信息。

$ch = curl_init();
...
$data = curl_exec( $ch );
if (!$data) {
    echo curl_getinfo( $ch ) . "\n";
    echo curl_errno( $ch ) . "\n";
    echo curl_error( $ch ) . "\n";
}

这些行应该为您提供更详细的报告,说明升级后出了什么问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接