我已经使用 Amazon Linux Yum 包安装了 PHP 的pecl_http
扩展。php54-pecl-http
php -i
显示http.ini
加载的文件http.ini
extension=http.so
里面有线php -m
显示已安装的 HTTP 模块pecl list
显示pecl_http 2.0.0beta1
为已安装。
但是,当我尝试使用它的任何功能时 - new HttpRequest()
、http_build_url()
等 - 它们会返回不存在。我在 CLI 上运行所有内容(这是一个实用程序服务器),因此php.ini
环境之间不可能存在不同的文件。
php -i
的 http 块状态:
http
HTTP Support => enabled
Extension Version => 2.0.0beta1
Used Library => Compiled => Linked
libz => 1.2.5 => 1.2.5
libcurl => 7.24.0 => 7.24.0
libevent => 1.4 or greater => 2.0.18-stable
libserf => disabled => disabled
Persistent Handles
Provider => Ident => Used => Free
http_client.curl => N/A => 0 => 0
http_client_pool.curl => N/A => 0 => 0
http_client_datashare.curl => N/A => 0 => 0
Directive => Local Value => Master Value
http.etag.mode => crc32b => crc32b
http.persistent_handle.limit => -1 => -1
有没有人经历过这个?有任何想法吗?
也许有点晚了,但也许这有助于其他人登陆这里......
确保您引用的是正确版本的 pecl_http API。它们在 v2 中移至命名空间,因此调用约定完全不同。Web 上的许多文档都参考了 v1.1 中的方法。
http://devel-m6w6.rhcloud.com/mdref/http
请试试
strace -fF -o /tmp/wtf php your_php_script.php
然后使用您选择的文本编辑器/查看器/grep 变体梳理
/tmp/wtf
文件,以查看 1) 是否读取了正确的 php.ini 以及 2) 是否实际加载了 http.so 扩展。