2008-10-03 28 views
16

Me preguntaba si había una forma de obtener los datos de solicitud HTTP sin formato en PHP que se ejecutan en apache y que no implican el uso de extensiones adicionales. He visto las funciones HTTP en el manual, pero no tengo la opción de instalar una extensión en mi entorno.¿Cómo puedo acceder a los datos de solicitud HTTP sin procesar con PHP/apache?

Si bien puedo acceder a la información de $ _SERVER, me gustaría ver la solicitud en bruto exactamente como se envió al servidor. PHP utiliza los nombres de encabezado para adaptarse a su propio estilo de clave de matriz, por ejemplo. Some-Test-Header se convierte en HTTP_X_SOME_TEST_HEADER. Esto no es lo que necesito.

Respuesta

10

¿Te refieres a la información contenida en $_SERVER?

print_r($_SERVER); 

Editar:

Sería esto entonces?

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

Sí, pero yo quiero la solicitud de prima antes de que se analiza en $ _SERVER por PHP – Shabbyrobe

+0

Nota: getallheaders() funciona con fastcgi desde php 5.4 – NickSoft

12

Usar la siguiente php envoltorio:

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

No creo que tenga los encabezados http. – MattSmith

+1

sí, solo cuerpo :) –

2

Prueba esto:

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