Estoy tratando de crear un servidor web que sirva scripts PHP. Actualmente, funciona de la siguiente manera:
- El cliente solicita /index.php?test=value
- El servidor invoca
php index.php
- El servidor alimenta los encabezados de solicitud HTTP como STDIN al proceso PHP
- El servidor lee el resultado de
php
STDOUT y lo devuelve al cliente
Todo esto funciona, excepto que los parámetros no se pasan al script PHP porque:
var_dump($_GET);
devoluciones:
matriz (0) {}
¿Cómo $_GET
se pasan los parámetros al binario PHP cuando se invoca?
Respuestas:
¿Qué binario PHP estás usando? El CLI o CGI? Sospecho que necesita una versión CGI del binario para que PHP maneje correctamente las variables de entorno y los datos POST si los pasa.
El
php-cgi
binario implementa la interfaz CGI, que le permite pasar parámetros en la línea de comando:Que terminan en
$_GET
:Es posible que desee leer sobre cómo funciona CGI para que pueda implementar eso en su servidor web.
Ref: RFC3875
fuente
Según Wikipedia , la respuesta es establecer la
QUERY_STRING
variable de entorno:o en pasos separados:
Esto funciona si usa el
php-cgi
comando, porque esto es parte de la especificación CGI. Elphp
comando ordinario ignora esta variable, pero su script puede usarla.fuente
Si pasa php script.php test = asdf
Si se lo pasa a STDIN, deberá leer STDIN y analizar los encabezados usted mismo. REQUEST_URI contendría los datos que necesita y puede pasarlos.
fuente
$_GET
como cuando PHP se usa en Apache./index.php?test=asdf;rm%20-rf%20/