2008-10-03 102 views
16

我想知道是否有辦法在Apache上運行的PHP中獲取原始HTTP請求數據,而不涉及使用任何附加擴展。我已經在手冊中看到了HTTP函數,但我沒有在我的環境中安裝擴展的選項。如何使用PHP/apache訪問原始HTTP請求數據?

儘管我可以從$ _SERVER訪問信息,但我希望看到原始請求與發送到服務器的原始請求完全相同。 PHP使用標題名稱來適應自己的數組鍵風格,例如。 Some-Test-Header變爲HTTP_X_SOME_TEST_HEADER。這不是我需要的。

回答

10

您的意思是包含在$_SERVER的信息?

print_r($_SERVER); 

編輯:

請問這怎麼辦呢?

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

是的,但我想的原始請求之前得到由PHP – Shabbyrobe 2008-10-03 03:56:54

+0

註解析爲$ _ SERVER:getallheaders ()與fastcgi一起工作,因爲PHP 5.4 – NickSoft 2013-03-13 14:31:28

12

使用下面的PHP包裝:

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

試試這個:

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