pecl_http无法加载

时间:2014-01-12 17:38:31

标签: php centos pecl

这是我的服务器配置:

  • CentOS 6.5版(最终版)
  • PHP 5.5.7
  • pecl_http 2.0.4 stable
  • 服务器版本: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

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

3 个答案:

答案 0 :(得分:18)

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

为方便起见,我也在下面复制了它:


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

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

pecl list

我无法让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

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

答案 1 :(得分:17)

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

 extension=raphf.so
 extension=propro.so
 extension=http.so

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

答案 2 :(得分:0)

当谈到从PECL或PEAR安装时,我似乎总是遇到阻止模块正常工作的“东西”。上面的错误实际上在Ubuntu& amp;的Debian。

Ubuntu& amp;提供的软件包。 Debian不会自动安装每个模块所需的所有依赖项,因此我不得不寻找StackExchange,Google和开发者网站之间的解决方案。

为我修复此问题(注意:在 Debian ,而不是CentOS上),正在安装以下软件包:

php5-phpdbg php5-dev php-http zlib1g-dev libcurl4-openssl-dev libevent-dev imagemagick libmagick++-dev imagemagick-common libmagic-dev libghc-iconv-dev libpcre3-dev

标记为php-http的包是故意的。这个特定的包不带5,因此除非你知道你需要它,否则你很可能会忽略它。因此对于那些在Ubuntu和/或Debian系统上的人来说,搜索php5和php(使用--names-only有助于缩小包的范围)。

我提到这一点,希望它能帮助其他可能在类似系统上遇到同样问题的人。我不是100%使用CentOS存储库的软件包名称,尽管一般所需的软件包名称可以帮助您和其他人缩小列表范围。

安装软件包后,只需卸载&重新安装pecl_http包,重启php5-fpm,错误应该消失;通过创建phpinfo文件确认。

相关问题