pecl_http无法加载

iEm*_*mad 10 php centos pecl

这是我的服务器配置:

  • CentOS 6.5版(最终版)
  • PHP 5.5.7
  • pecl_http 2.0.4稳定
  • 服务器版本:Apache/2.2.15(Unix)

我已经准备好了所有的东西,除非我试图加载pecl_http模块时它给了我以下警告并且它不会加载:

PHP Warning:  PHP Startup: Unable to load dynamic library '/path/to/php/modules/http.so' - /path/to/php/modules/http.so: undefined symbol: php_persistent_handle_abandon in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

我试着到处寻找但没有运气.安装似乎很好,但我不知道它有什么问题.

amu*_*ell 18

我带着同样的问题来到这里 - 我无法让2.0.4工作 - 希望能帮助你或其他人在这里绊倒,我邀请你在这里查看我在serverfault上的答案.

为方便起见,我还复制了以下内容:


我没有设置问题 - 至少我不知道.我正在运行nginx + php5-fpm.我的php.ini文件已正确配置,我所有其他扩展都正常工作 - 使用phpinfo()或php --ini进行测试.

我对pecl_http(HttpRequest)的问题是扩展的版本(2.0.4).通过在命令行中运行来检查您的版本

pecl list
Run Code Online (Sandbox Code Playgroud)

我无法让pecl_http-2.0.4工作,但我能够运行

pecl uninstall pecl_http

然后

pecl install pecl_http-1.7.6.确保您也安装了libcurl,否则您可能会遇到安装失败.

重新启动php5-fpm和我的网络服务器(nginx)后,一切都完美无缺!


额外帮助:

在安装之前 - 并且安装了pear - 您可能希望运行这两个命令,假设您在fpm中使用php.ini - 或者您可以根据您的配置编写路径:

pear config-set php_ini /etc/php5/fpm/php.ini
pecl config-set php_ini /etc/php5/fpm/php.ini
Run Code Online (Sandbox Code Playgroud)

这使得pecl知道你在web服务器上使用哪个php.ini文件,并将extension = http.so添加到正确的位置.这对我有所帮助,也许它对你也有帮助!

  • 还要确保在加载http之前加载propro和raphf否则会出错. (3认同)

Jac*_*ler 17

从版本2开始,PECL HTTP需要在http之前加载模块raph​​f和propro.所以编辑你的php.ini或php.d/pecl_http.ini或者你加载模块,所以它看起来像:

 extension=raphf.so
 extension=propro.so
 extension=http.so
Run Code Online (Sandbox Code Playgroud)

资料来源:http: //www.php.net/manual/en/http.install.php#113769

  • 这是正确的解释和正确的解决方案. (2认同)