【发布时间】:2015-12-22 10:20:27
【问题描述】:
我在 Mac OS X 10.9.5 和 PHP 5.6.13 上运行 PHP PECL 扩展 pecl_http (https://pecl.php.net/package/pecl_http) 时遇到了很大的麻烦。
情况如下:我已经编译并加载了 pecl_http 扩展以及依赖关系 raphf 和 propro,但我仍然无法运行扩展中的任何代码。如果我尝试实例化对象或调用函数,我总是会得到“未找到”错误,如下所示:
$ ./php -r "new HttpUrl();"
Fatal error: Class 'HttpUrl' not found in Command line code on line 1
我可以说扩展(http、propro 和 raphf)都已加载,因为如果我尝试在 php.ini 中启用它们(例如,extension=http.so),它会给我一个警告说扩展已经加载。
我尝试了两种方法,但它们似乎都不起作用。
1) 我首先编译了 PHP,然后尝试使用 pecl install http://link_to_extension 安装扩展。它会自动安装依赖项。此方法无效。
2) 我重新编译了 PHP,将 Http pecl 扩展和依赖项静态编译到 PHP src 中,如文档所述 (http://php.net/manual/en/install.pecl.static.php)。
结果,我处于我在开始时描述的情况:加载了扩展,但我无法调用 pecl_http 方法/函数/对象。
【问题讨论】:
-
通过检查
phpinfo()的输出确保包被加载 -
大家好,感谢您的回答。我可以从 phpinfo() 确认扩展似乎已加载。以下是摘录:http HTTP Support => enabled Extension Version => 2.5.2 Used Library => Compiled => Linked libz => 1.2.8 => 1.2.8 libcurl => 7.44.0 => 7.44.0 libevent = > disabled => disabled Directive => Local Value => Master Value http.etag.mode => crc32b => crc32b 我还尝试使用 extension_loaded() 检查它的运行时,正如 Mike 引用的帖子中所建议的那样,它返回真的。因此,它已加载!真的不知道...
-
哇!有用!!你能解释一下为什么吗?!谢谢大佬!
标签: php http php-extension pecl