php - PECL_HTTP 已安装,但不起作用

标签 php pear pecl lampp

我已经安装了 pecl_http,但是当我尝试使用它时,出现错误:

Fatal error: Uncaught Error: Call to undefined function http_get() in /opt/lampp/htdocs/tes_http.php:3 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/tes_http.php on line 3

这是我的 php.ini 配置:

extension="propro.so"
extension="http.so"
extension="raphf.so"
[PHP]

;;;;;;;;;;;;;;;;;;;

请帮我弄清楚为什么该功能不可用。

最佳答案

http 扩展的当前版本( package 名称pecl_http)不提供http_get()功能。此功能已在 2.0.0 版本中删除(紧接在 1.7.6 版本之后)。您可以通过在终端中运行以下命令来查看它:

git clone https://github.com/m6w6/ext-http.git
cd ext-http
git diff RELEASE_1_7_6 RELEASE_2_0_0

虽然在 changelog 中没有明确提及, 在第二个版本中,过程式风格被完全替换为 OOP 风格。

documentation on PHP's official site已经过时了。扩展的作者在 his own site 上托管了新版本.我不会责怪他,因为关于 PECL site 的文档链接指向正确的位置。毫无疑问,他应该从 php.net/manual 中删除旧文档,或者至少更新它。

执行 HTTP GET 请求的新方法意味着使用 http\Client\Request 类:

$request = new http\Client\Request("GET",
  "http://example.com",
  ["User-Agent"=>"MyAgent/0.1"]
);
$request->setOptions(["timeout" => 1]);

$client = new http\Client;
$client->enqueue($request)->send();

$response = $client->getResponse();

关于设置

您应该在 http.so 之前加载依赖项,因为它在 documentation 中被推荐:

; obligatory deps
extension = raphf.so
extension = propro.so

; if shared deps were enabled
extension = hash.so
extension = iconv.so
extension = json.so

; finally load pecl/http
extension = http.so

关于php - PECL_HTTP 已安装,但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500051/

相关文章:

php - 必需的自定义 WooCommerce 结帐字段不验证输入的值

php - PEAR mail-queue教程配置麻烦

php - 使用 PHP 解析 .htaccess 文件

php - 为什么 ajax 响应没有附加到下拉列表?

javascript - 通过ajax发送javascript数组而不使用jquery

php - 将新的命名键添加到 preg_match_all 的匹配项中

postgresql - 在centos上安装pdo_pgsql

php - Windows - PHPDocs 无法通过 Pear 安装

php - 使用 PHP 5.5.3 在 MAMP 2.2 上安装 PECL Intl

php - 在 Eclipse 中为不同的 PECL 扩展启用 PHP Code Assist