2016-11-09 24 views
2

,但是當我嘗試使用它,我得到一個錯誤:PECL_HTTP已安裝,但不工作我已經安裝了<code>pecl_http</code>

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] 

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

請幫我弄清楚爲什麼這個功能不可用。

+0

如果你還沒有,你必須在你的'php.ini'文件中啓用'; extension = php_http.dll'。只需刪除分號,然後重新啓動Apache服務器。 –

回答

2

http分機上(packagepecl_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明確提到它,程序風格是完全面向對象的風格在第二個版本所取代。

documentation on PHP's official site已過時。 Extension的作者在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.sodocumentation

; 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 
+0

我一直在使用你的腳本,但我仍然有一個錯誤 致命錯誤:未捕獲錯誤:類'http \ Client \ Request'找不到/opt/lampp/htdocs/tes_http.php:3堆棧跟蹤:#0 {main }在第3行拋出/opt/lampp/htdocs/tes_http.php – Herdy

+0

@Herdy,var_dump的輸出是什麼(extension_loaded('http'));'?在'phpinfo();'輸出中是否存在擴展名? –

+0

是的,我有這樣的輸出bool(false) 你知道如何解決這個問題嗎?我正在使用Ubuntu 14.04 LTS,PHP 7和LAMPP @Ruslan – Herdy

相關問題