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)
请帮我弄清楚为什么功能不可用.
当前版本的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)