PHP curl_exec——如果安装了pecl_http,初始化失败


PHP curl_exec — Failed Initialization if pecl_http is installed

我最近升级到Yosemite并安装了Liip 5.5 php-osx包。

curl_exec()快速返回,并出现"初始化失败"错误。即CCD_ 2打印CCD_。

我已经从我的机器上检查了URL,它很好。我在一个非常基本的脚本中复制了这个错误,比如:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);

所有curl_setopt()调用都返回true。初始化失败错误仅在curl_exec()调用之后报告。

php-v显示:

PHP 5.5.18 (cli) (built: Oct 20 2014 17:14:13) 

来自php-i:

Configure Command => […] '--with-curl=shared,/usr/local/php5'

cURL support => enabled
cURL Information => 7.37.1

看起来我的系统上有3个curl二进制文件:

  • /usr/bin/ccurl
  • /usr/local/php5-5.5.18-20141021-213554/bin/curl
  • /usr/local/php5-5.5.5-20131020-222726/bin/curl

我试着将其中的每一个依次重命名为其他名称,然后再试一次,但都无济于事。事实上,同时重命名这三个名称也不会影响结果。

我试着安装了5.4和5.6版本的软件包,结果是一样的。

有趣的是…如果安装了pecl_http,那么我会得到"初始化失败"的错误。如果我删除pecl_http,我不会。不幸的是,我需要同时使用cURL和pecl_http。

如果你能提供任何帮助,我将不胜感激。

尝试

$ ldd $(php-config --extension-dir)/{curl,http}.so | grep curl

确保两者都链接到同一个libcurl。