Por que a matriz PHP $ _REQUEST está vazia?

5

Eu instalei o nginx no Ubuntu Hardy e imediatamente percebi que os scripts PHP estavam recebendo matrizes de requisições vazias, isto é, se GET ou POST não estavam chegando, até mesmo o array $ _REQUEST estava vazio.

Quando eu voltar para o Apache, tudo bem.

A versão do nginx de instalação é 0.6.35-0ubuntu1.1 ~ hardy1 e PHP é PHP Versão 5.2.4-2ubuntu5.10.

O que poderia estar errado?

    
por vfclists 16.08.2010 / 17:36

3 respostas

4

Verifique se isso está definido na seção "location" do seu módulo fastcgi

 fastcgi_param  QUERY_STRING     $query_string;

link

    
por 16.08.2010 / 21:44
6

É um recurso do try_files command em nginx que o query_string não é passado automaticamente para o arquivo reescrito, mas deve ser passado explicitamente. Por causa disso, _$SERVER['QUERY_STRING'] está sempre vazio e, portanto, as variáveis $_REQUEST e $_GET também não estão definidas.

Na documentação do Nginx:

Unlike with rewrite, $args are not automatically preserved if the fallback is not a named location. If you need args preserved, you must do so explicitly:

try_files $uri $uri/ /index.php?q=$uri&$args;

ou apenas com os argumentos

try_files $uri $uri/ /index.php?$args;

Se você quiser garantir a obtenção dos argumentos originais, use $query_string , que é o mesmo que $args , exceto que $query_string é somente leitura.

    
por 11.12.2012 / 07:55
0

Tente verificar o variables_order no arquivo de configuração do php usado por nginx.

    
por 16.08.2010 / 17:55