2016-11-09 2 views
2

ich pecl_http installiert haben, aber wenn ich versuche, es zu benutzen, bekomme ich eine Fehlermeldung:PECL_HTTP installiert ist, funktioniert aber nicht

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

Das ist mein php.ini Konfiguration:

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

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

Bitte helfen Sie mir herauszufinden, warum die Funktion nicht verfügbar ist.

+0

Wenn Sie noch nicht sind, müssen Sie '; extension = php_http.dll' in Ihrer' php.ini' Datei aktivieren. Einfach Semikolons entfernen und danach den Apache Server neu starten. –

Antwort

2

Die aktuelle Version von http Erweiterung (der package Name ist pecl_http) nicht http_get() Funktion bietet. Diese Funktion wurde in Version 2.0.0 (gleich nach Version 1.7.6) entfernt. Sie können es sehen, indem Sie die folgenden Befehle im Terminal ausgeführt wird:

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

Obwohl es nicht explizit in den changelog erwähnt wird, das Verfahren Stil komplett mit OOP Stil in der zweiten Version ersetzt wird.

Die documentation on PHP's official site ist veraltet. Der Autor von Extension hat die neue Version unter his own site gehostet. Ich würde ihm nicht viel Vorwürfe machen, da der Link zur Dokumentation über die PECL site auf den richtigen Platz zeigt. Zweifellos sollte er die alte Dokumentation von php.net/manual entfernen oder zumindest aktualisieren.

Der neue Weg HTTP GET-Anfragen auszuführen impliziert die Verwendung von http\Client\Request Klasse:

$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(); 

In Bezug auf das Setup

Sie die Abhängigkeiten vorhttp.so laden sollte, wie es in der empfohlen wird, 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 
+0

Ich habe Ihr Skript verwendet, aber ich habe immer noch einen Fehler Fataler Fehler: Uncaught Fehler: Klasse 'http \ Client \ Request' nicht in /opt/lampp/htdocs/tes_http.php:3 gefunden Stack-Trace: # 0 {main } geworfen in /opt/lampp/htdocs/tes_http.php in Zeile 3 – Herdy

+0

@Herdy, was ist die Ausgabe für 'var_dump (extension_loaded ('http'));'? Ist die Erweiterung in der Ausgabe von phpinfo() vorhanden? –

+0

Ja, ich habe eine Ausgabe wie diese bool (false) wissen Sie, wie Sie das lösen.? Ich benutze Ubuntu 14.04 LTS, PHP 7 und LAMPP @Ruslan – Herdy

Verwandte Themen