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

时间:2014-10-30 09:49:22

标签: php macos curl libcurl pecl

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

curl_exec()快速返回“初始化失败”错误。即echo curl_strerror(curl_errno($ch));打印Failed initialization

我已经检查过我机器上的网址了,没关系。我在一个非常基本的脚本中重现了这个错误:

<?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个卷曲二进制文件:

  • 的/ usr /斌/卷曲
  • /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,那么我会收到“Failed initialization”错误。如果我删除pecl_http,我不会。不幸的是,我需要同时使用cURL和pecl_http。

我很感激您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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