2013-09-02 16 views
11

Po prostu chcę utworzyć httprequest z parametrami posta. Kiedyś ten kodHttpRequest nie znaleziono w php

$r = new HttpRequest($url, HttpRequest::METH_POST); 
$r->send(); 

ale otrzymuję ten błąd:

ErrorException [ Fatal Error ]: Class 'HttpRequest' not

I dodaną extension=php_http.dll to moim php.ini, ale problem nadal istnieje. Pobieram plik php_http.dll i wstawiłem go do folderu ext php, ale już istniał, więc wymieniłem i nadal mam ten sam problem.

Każda pomoc będzie mile widziane

+0

hi, czy sprawdzić, czy istnieje dll w folderze rozszerzeniem php? –

Odpowiedz

6

Jeśli używasz php 5.4 lub wyżej, nie wydaje się być plikiem php_http.dll dołączyć do biblioteki rozszerzeń (Chyba, że ​​ktoś może znaleźć taki, że brakowało mi ??).

Jedyne, co mogłem znaleźć, wygenerowało błędy podczas uruchamiania serwera Apache po aktualizacji pliku konfiguracyjnego php.ini, tak aby zawierało rozszerzenie.

Nie obawiaj się jednak, ponieważ wygląda na to, że projekt GitHub zapewnia funkcjonalność wewnątrz klasy, a nie rozszerzenie. Click here to find the required class.

Jeśli zapiszesz tę klasę w projekcie i nazwiesz ją w ten sposób;

include_once('HttpRequest.php'); //where HttpRequest.php is the saved file 
$url= 'http://www.google.com/'; 
$r = new HttpRequest($url, "POST"); 
var_dump($r->send()); 

przeciwnym razie, wydaje się, że jedyną realną opcją byłoby skompilować .dll się od źródła here :(

przeciwnym razie, innym rozwiązaniem byłoby użyć cURL zamiast. CURL zapewnia . większość (jeśli nie wszystkie) z funkcjonalnością httpRequest

prostym przykładem tego może być,

$url = "http://www.google.com/";   
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 
$head = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
var_dump($head); 

Mor Szczegóły E i lepsze przykłady można znaleźć na stronie internetowej php Here

Mam nadzieję, że to pomoże odpowiedzieć na to pytanie, a nie zostawiają cię z więcej ...

+1

'php_http.dll' dla PHP 5.4 można znaleźć na https://github.com/stealth35/stealth35.github.com/downloads – user555

+0

Ah, czy byłem w końcu ślepy? Dziękujemy za pomoc w znalezieniu pliku php_http.dll. Czy wiesz, czy wspomniany .dll działa poprawnie po włączeniu w 'php.ini' i ponownym uruchomieniu usługi Apache? – guyver4mk

+0

Działa dobrze z moją instalacją PHP 5.4.7. 'phpinfo()' informuje, że rozszerzenie 'http' wersja' 1.7.4' jest włączone i działa. – user555

4

Musisz upewnić się, że masz php_http.dll pasującej Wersja PHP. Możesz zrobić <?php phpinfo();, aby sprawdzić przy ładowaniu rozszerzeń (poszukaj "http", wyświetli się wersja i dostępne klasy).

Jeśli rozszerzenie nie pojawia się w phpinfo(), należy sprawdzić dzienniki, aby dowiedzieć się, skąd bierze się problem, lub uruchomić plik binarny PHP bezpośrednio z wiersza polecenia - php -i. Jeśli wystąpi błąd podczas ładowania biblioteki dynamicznej, pojawi się ona w oknie dialogowym. Zauważ, że PHP nadal będzie działało mimo, że nie można załadować rozszerzenia.

3

można ponownie zainstalować pakiet

$ pecl install -f pecl_http-1.7.6 

lub dostępu do danych za pomocą curl jak this snippet

Powiązane problemy