由于某种原因,pecl_http 扩展没有出现在包含以下内容的我的 test.php 文件中:
<?php phpinfo(); ?>
我刚刚使用以下命令安装了 pecl_http:
pecl 安装 pecl_http
安装成功,我通过运行以下命令进行了验证:
pecl 列表
Installed packages, channel pecl.php.net:
=========================================
Package Version State
mongo 1.2.10 stable
pecl_http 1.7.4 stable
然后我使用以下命令找到我的 php.ini 文件:
php -i | grep '配置文件'
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
我在 vim 中编辑了它并添加:
扩展=http.so
最后我重新启动了 Nginx 和 PHP-FastCGI:
/etc/init.d/nginx restart
/etc/init.d/php-fastcgi stop
/etc/init.d/php-fastcgi start
我的 PHP extension_dir 是:
/usr/lib/php5/20090626
我验证了“http.so”位于该目录中。
知道为什么它没有加载吗?
我的机器在 Linode 上运行的是 Ubuntu 10.04 LTS 64 位配置文件。我安装的其他扩展只有 New Relic 和 Mongo。
谢谢!
答案1
查看你的 phpini 文件路径:
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
CLI 是命令行界面。从您的网络服务器检查 phpinfo() 并编辑正确的 php.ini。
答案2
对于那些可能来这里寻找答案但所接受的答案不适合您情况的人来说 - 我可能有您的解决方案!
我没有遇到设置问题 - 至少就我所知没有。我正在运行 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 添加到正确的位置。这对我很有帮助,所以也许对您也有帮助!
答案3
当我从 AUR 安装一个软件包时:
pecl_http
并且我取消注释 pecl_http PHP 扩展:
扩展=http.so
在文件中:
/etc/php/conf.d/http.ini
从这个命令:
php 测试.php
我有:
PHP 警告:无法加载模块‘http’,因为所需模块‘iconv’未在第 0 行的未知内容中加载
删除评论:
扩展名=iconv.so
在文件中:
/etc/php/php.ini
解决了问题。
Linux 发行版:Manjaro(基于 Arch Linux)。