2008-10-03 144 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;