Estou tentando criar um servidor da web que serve scripts PHP. Atualmente, funciona da seguinte maneira:
- O cliente solicita /index.php?test=value
- O servidor chama
php index.php
- O servidor alimenta os cabeçalhos de solicitação HTTP como STDIN no processo PHP
- O servidor lê a saída de
php
STDOUT e a retorna ao cliente
Tudo isso está funcionando, exceto que os parâmetros não estão sendo passados para o script PHP porque:
var_dump($_GET);
retorna:
matriz (0) {}
Como os $_GET
parâmetros são passados para o binário do PHP quando ele é chamado?
Respostas:
Qual binário PHP você está usando? A CLI ou CGI? Eu suspeito que você precisa de uma versão CGI do binário para PHP para lidar adequadamente com aceitar as variáveis de ambiente e dados POST, se você passar isso.
O
php-cgi
binário implementa a interface CGI, que permite passar parâmetros na linha de comando:Que terminam em
$_GET
:Você pode ler como o CGI funciona para implementá-lo em seu servidor da web.
Ref: RFC3875
fonte
Segundo a Wikipedia , a resposta é definir a
QUERY_STRING
variável de ambiente:ou em etapas separadas:
Isso funciona se você usar o
php-cgi
comando, porque isso faz parte da especificação CGI. Ophp
comando comum ignora essa variável, mas seu script pode usá-la.fonte
Se você passar no php script.php test = asdf
Se você estiver passando para o STDIN, precisará ler o STDIN e analisar os cabeçalhos. REQUEST_URI conteria os dados de que você precisa e pode ser transmitido.
fonte
$_GET
como estão quando o PHP é usado no Apache./index.php?test=asdf;rm%20-rf%20/