pecl_http 扩展未加载

Teg*_*der 1 php nginx pecl linode

出于某种原因,pecl_http 扩展没有出现在我的 test.php 文件中,其中包含:

<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

我刚刚安装了 pecl_http 使用:

pecl 安装 pecl_http

安装成功,我通过运行验证了它:

目录

Installed packages, channel pecl.php.net:
=========================================
Package   Version State
mongo     1.2.10  stable
pecl_http 1.7.4   stable
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令找到了我的 php.ini 文件:

php -i | grep '配置文件'

Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

我在 vim 中编辑它并添加:

扩展名=http.so

最后我重新启动了 Nginx 和 PHP-FastCGI:

/etc/init.d/nginx restart
/etc/init.d/php-fastcgi stop
/etc/init.d/php-fastcgi start
Run Code Online (Sandbox Code Playgroud)

我的 PHP extension_dir 是:

/usr/lib/php5/20090626

我确认“http.so”位于该目录中。

任何想法为什么它没有加载?

我的机器在 Linode 上运行 Ubuntu 10.04 LTS 64 位配置文件。我安装的唯一其他扩展是 New Relic 和 Mongo。

谢谢!

amu*_*ell 6

对于可能已经到达这里寻找答案但接受的答案不适合您的情况的其他任何人 - 我可能有您的解决方案!

我没有设置问题 - 至少据我所知没有。我正在运行 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

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