2008-10-03 4 views
16

Ich frage mich, ob es einen Weg gab, um die rohen HTTP-Request-Daten in PHP zu bekommen, die auf Apache laufen und keine zusätzlichen Erweiterungen benötigen. Ich habe die HTTP Funktionen im Handbuch gesehen, aber ich habe keine Möglichkeit, eine Erweiterung in meiner Umgebung zu installieren.Wie kann ich mit PHP/Apache auf die Raw HTTP-Anfrage Daten zugreifen?

Während ich auf die Informationen von $ _SERVER zugreifen kann, möchte ich die rohe Anfrage genau so sehen, wie sie an den Server gesendet wurde. PHP passt die Header-Namen an seinen eigenen Array-Schlüssel-Stil an, z. Some-Test-Header wird zu HTTP_X_SOME_TEST_HEADER. Das ist nicht was ich brauche.

Antwort

10

Meinst du die Informationen in $_SERVER?

print_r($_SERVER); 

Edit:

dies dann tun würde?

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

Ja, aber ich mag die rohe Anfrage, bevor es in $ _SERVER von PHP – Shabbyrobe

+0

Hinweis analysiert wird: getallheaders() arbeitet mit fastcgi seit PHP 5.4 – NickSoft

12

Verwenden Sie den folgenden PHP-Wrapper:

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

Ich glaube nicht, dass das die http-Header obwohl. – MattSmith

+1

yep nur Körper :) –

2

testen:

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