2008-10-03 33 views
16

Tôi đã tự hỏi nếu có một cách để có được dữ liệu yêu cầu HTTP thô trong PHP chạy trên apache mà không liên quan đến việc sử dụng bất kỳ phần mở rộng bổ sung. Tôi đã nhìn thấy các chức năng HTTP trong hướng dẫn sử dụng, nhưng tôi không có tùy chọn cài đặt một phần mở rộng trong môi trường của tôi.Làm cách nào để truy cập dữ liệu yêu cầu HTTP thô với PHP/apache?

Trong khi tôi có thể truy cập thông tin từ $ _SERVER, tôi muốn xem yêu cầu thô chính xác như được gửi đến máy chủ. PHP đặt tên tiêu đề cho phù hợp với kiểu khóa mảng riêng của nó, ví dụ: Một số-Test-Header trở thành HTTP_X_SOME_TEST_HEADER. Đây không phải là những gì tôi cần.

Trả lời

10

Bạn có phải là thông tin có trong $_SERVER không?

print_r($_SERVER); 

Edit:

này sẽ làm gì?

foreach(getallheaders() as $key=>$value) { 
    print $key.': '.$value."<br />"; 
} 
+5

Vâng, nhưng tôi muốn yêu cầu liệu trước khi nó được phân tích thành $ _SERVER bởi PHP – Shabbyrobe

+0

Lưu ý: getallheaders() làm việc với fastcgi từ php 5.4 – NickSoft

12

Sử dụng các wrapper php sau:

$raw_post = file_get_contents("php://input"); 
+7

Tôi không nghĩ rằng đó là tiêu đề http mặc dù. – MattSmith

+1

yep only body :) –

2

Hãy thử điều này:

$request = $_SERVER['SERVER_PROTOCOL'] .' '. $_SERVER['REQUEST_METHOD'] .' '. $_SERVER['REQUEST_URI'] . PHP_EOL; 

    foreach (getallheaders() as $key => $value) { 
    $request .= trim($key) .': '. trim($value) . PHP_EOL; 
    } 

    $request .= PHP_EOL . file_get_contents('php://input'); 

    echo $request; 
Các vấn đề liên quan