pecl_http
我已经使用 Amazon Linux Yum 包安装了 PHP 的扩展php54-pecl-http
。
php -i
显示http.ini
文件已加载http.ini
有extension=http.so
线条php -m
显示 HTTP 模块已安装pecl list
显示pecl_http 2.0.0beta1
为已安装。
但是,当我尝试使用它的任何功能(new HttpRequest()
、等)时,它们会返回为不存在。我在 CLI 上运行所有内容(这是一个实用程序服务器),因此环境之间http_build_url()
不存在不同的文件。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
有人遇到过这种情况吗?有什么想法吗?
答案1
可能有点晚了,但也许这可以帮助其他人到达这里......
确保您引用了正确版本的 pecl_http API。它们在 v2 中移至命名空间,因此调用约定完全不同。网络上的许多文档都引用了 v1 中的方法。
答案2
请尝试
strace -fF -o /tmp/wtf php your_php_script.php
然后使用您选择的文本编辑器/查看器/grep 变体梳理/tmp/wtf
文件以查看 1) 是否读取了正确的 php.ini 和 2) 是否实际加载了 http.so 扩展。