2016-08-20 2 views
-2

HINWEIS: Ich sollte hinzufügen, dass ich nicht für eine cURL-Lösung fischen. Ich kenne und tue schon cURL. Ich möchte sehen, was in meinem Experiment mit einer http-Funktion passiert.PHP 7 kopierte php_http.dll in php/ext/funktioniert nicht?

Ich bin mit PHP 7 von einer XAMPP Installation an:

C: xampp \ php

ich einen Windows pecl-5.2.6-Win32.zip heruntergeladen, die von DLL-Dateien voll war Dann kopierte ich die php_http.dll-Datei in meinen php \ ext-Ordner, wo alle anderen .dlls gefunden wurden.

Ich habe meine php.ini bearbeitet und die Zeile extension=php_http.dll in der alphabetischen Reihenfolge aller anderen Erweiterungen hinzugefügt (als ob das einen Unterschied macht).

Dann habe ich Apache neu gestartet und versucht, eine $response = http_get($url); durchzuführen, aber den Fehler "Aufruf zu undefinierter Funktion http_get()".

Scheint, als ob ich alle Schritte richtig mache, aber die HTTP-Funktionen funktionieren einfach nicht. Außerdem habe ich mein phpinfo() angeschaut und sehe keinen Hinweis auf eine PECL-Erweiterung.

UPDATE: ich in einem anderen Forum ein ähnliches Problem zu lesen, wo diese Zeile in der Apache error.log gefunden:

C:\xampp\php\ext\php_http.dll' - The specified module could not be found.

Der einzelne sagte er seine PHP-Version heruntergestuft, wiederholt dann die Schritte und es hat funktioniert.

Letzte Nacht habe ich von PHP 7 auf PHP 5.6 heruntergestuft. Ich wiederholte die DLL-Kopie/ext, aktiviert php_http.dll in der php.ini, und bekam dann einen anderen Fehler:

HP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_http.dll' - %1 is not a valid Win32 application.\r\n in Unknown on line 0

ich diese Windows http extensions gefunden, wieder die DLL-Datei kopiert, neu gestartet Apache, aber jetzt Ich bin zurück zu

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_http.dll' - The specified module could not be found.\r\n in Unknown on line 0

Antwort

1

Anstatt so viele Änderungen zu tun, könnten Sie einfach Curl verwendet haben und das gleiche Ergebnis erhalten. Verweis auf PECL auf http_get wurde entfernt. Diese Version von PECL ist für PHP 5.2.x. Welche Version von PHP verwenden Sie? Stattdessen können Sie diese Funktion verwenden

function url_get($url) 
{ 
    $ch = curl_init(); // initialize curl handle 
    curl_setopt($ch, CURLOPT_URL,$url); // set url to post 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); // times out after 10s 
    $urlcontent = curl_exec($ch); 
    curl_close($ch); 
    return($urlcontent); 
} 
$url = "example.com"; 
url_get($url); 
+0

Ich habe cURL ausgiebig für dieses Projekt verwendet. Ich frage nicht nach einer cURL-Lösung. Ich möchte sehen, was mit einer http-Funktion passiert. – TARKUS

+0

@InfiniteLoop Wenn Sie meine Antwort gelesen haben, habe ich bereits festgestellt, dass es in PHP 5.2.x funktioniert. Aber ich weiß nicht welche Version von PHP du versuchst? –

+0

Ah, tut mir leid. Ich habe von PHP 7 (scheint nicht ein PECL für 7) zu PHP 5.6 zurückgerollt. Wird immer noch 'Dynamische Bibliothek nicht laden' C: \ xampp \ php \ ext \ php_http.dll '- Das angegebene Modul konnte nicht gefunden werden.' Die Erweiterung scheint für diese Version gemacht zu sein. Ich muss vielleicht zu früheren PHP-Versionen zurückkehren, bis einer funktioniert? – TARKUS