2013-09-02 44 views
11

Tôi chỉ muốn thực hiện một httprequest với các thông số bài viết. Tôi đã sử dụng mã nàyHttpRequest không tìm thấy trong php

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

nhưng tôi nhận được lỗi này:

ErrorException [ Fatal Error ]: Class 'HttpRequest' not

tôi thêm extension=php_http.dll này để php.ini của tôi, nhưng vấn đề vẫn còn tồn tại. Tôi tải về tập tin php_http.dll và chèn nó vào thư mục ext của php nhưng nó đã tồn tại nên tôi đã thay thế và vẫn gặp vấn đề tương tự.

Bất kỳ trợ giúp sẽ được đánh giá

+0

hi, bạn đã xác nhận rằng dll tồn tại trong thư mục mở rộng của php? –

Trả lời

6

Nếu bạn đang sử dụng php 5.4 trở lên, có vẻ không phải là một tập tin php_http.dll để đưa vào thư viện mở rộng của bạn (Trừ khi ai đó có thể tìm thấy một mà tôi bị mất ??).

Chỉ có một lỗi mà tôi có thể phát hiện khi khởi động máy chủ Apache sau khi cập nhật tệp cấu hình php.ini để bao gồm phần mở rộng.

Tuy nhiên, đừng sợ, vì dường như có một Dự án GitHub cung cấp chức năng trong một lớp, chứ không phải là tiện ích mở rộng. Click here to find the required class.

Nếu bạn lưu lớp này trong dự án của mình và gọi như vậy;

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

Không đó, nó sẽ có vẻ rằng chỉ có lựa chọn khả thi khác sẽ được biên dịch .dll mình từ nguồn here :(

Nếu không, tùy chọn khác sẽ được sử dụng cURL để thay thế. CURL cung cấp . hầu hết (nếu không muốn nói là tất cả) các chức năng của httpRequest

Một ví dụ đơn giản này sẽ là;

$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 chi tiết điện tử và các ví dụ tốt hơn có thể được tìm thấy trên trang web php Here

Tôi hy vọng điều này sẽ giúp trả lời câu hỏi của bạn, chứ không phải để lại cho bạn thêm ...

+1

'php_http.dll' cho PHP 5.4 có thể được tìm thấy tại https://github.com/stealth35/stealth35.github.com/downloads – user555

+0

Ah, sau này tôi có bị mù không? Cảm ơn bạn đã hỗ trợ định vị php_http.dll. Bạn có biết nếu các đề cập .dll chạy một cách chính xác sau khi bao gồm trong 'php.ini' và khởi động lại dịch vụ Apache? – guyver4mk

+0

Hoạt động tốt với bản cài đặt PHP 5.4.7 của tôi. 'phpinfo()' báo cáo rằng phần mở rộng 'http' phiên bản '1.7.4' được kích hoạt và hoạt động. – user555

4

Bạn cần phải chắc chắn rằng bạn có một php_http.dll phù hợp với bạn Phiên bản PHP. Bạn có thể làm <?php phpinfo(); để kiểm tra các tiện ích được tải (tìm kiếm "http", nó sẽ liệt kê phiên bản và các lớp có sẵn).

Nếu tiện ích mở rộng không xuất hiện trong phpinfo(), bạn nên kiểm tra nhật ký của mình để tìm hiểu sự cố xuất phát từ đâu hoặc chạy trực tiếp mã nhị phân PHP từ dấu nhắc lệnh - php -i. Nếu có bất kỳ lỗi nào khi tải thư viện động, nó sẽ hiển thị trong hộp thoại. Lưu ý rằng PHP sẽ vẫn tiếp tục hoạt động mặc dù tiện ích không tải được.

3

bạn có thể cài đặt lại gói

$ pecl install -f pecl_http-1.7.6 

hoặc truy cập vào dữ liệu sử dụng curl như this snippet

Các vấn đề liên quan