PECL_HTTP已安装,但不起作用

Her*_*rdy 3 php pear pecl lampp

我安装了pecl_http,但是当我尝试使用它时,我收到一个错误:

致命错误:未捕获错误:在/opt/lampp/htdocs/tes_http.php:3中调用未定义函数http_get()堆栈跟踪:#3 {main}在第3行的/opt/lampp/htdocs/tes_http.php中引发

这是我的php.ini配置:

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

;;;;;;;;;;;;;;;;;;;
Run Code Online (Sandbox Code Playgroud)

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

Rus*_*nov 5

当前版本的http分机上(名称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
Run Code Online (Sandbox Code Playgroud)

尽管在更改日志中未明确提及,但在第二个版本中,过程样式完全被OOP样式替换.

PHP官方网站上文档已经过时.Extension的作者在他自己的网站上托管了新版本.我不会责怪他,因为PECL网站上的文档链接指向了正确的位置.毫无疑问,他应该删除旧文档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();
Run Code Online (Sandbox Code Playgroud)

关于设置

您应该加载依赖之前 http.so的中推荐,因为它的文档:

; 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
Run Code Online (Sandbox Code Playgroud)