web-dev-qa-db-ja.com

PHP $ _REQUEST配列が空なのはなぜですか?

私はUbuntu Hardyにnginxをインストールし、PHPスクリプトが空のリクエスト配列を取得していること、つまりGETまたはPOST _REQUEST配列が空でした。

私がApacheに戻ったとき、それはすべてうまくいきました。

インストールnginxのバージョンは0.6.35-0ubuntu1.1〜hardy1であり、PHP is PHP Version 5.2.4-2ubuntu5.10。

何が悪いのでしょうか?

8
vfclists

これがfastcgiモジュールの「場所」セクションに設定されているかどうかを確認してください

 fastcgi_param  QUERY_STRING     $query_string;

http://wiki.nginx.org/NginxHttpFcgiModule

6
funkdoobiest

Nginxのtry_files commandの機能は、query_stringが書き換えられたファイルに自動的に渡されず、明示的に渡される必要があることです。このため、_$SERVER['QUERY_STRING']は常に空であるため、変数$_REQUESTおよび$_GETも設定されません。

Nginxのドキュメント: から

Rewriteとは異なり、フォールバックが名前付きの場所でない場合、$ argsは自動的に保存されません。引数を保持する必要がある場合は、明示的に行う必要があります。

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

または引数だけで

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

元の引数を確実に取得したい場合は、$query_stringを使用してください。これは、$argsが読み取り専用であることを除いて、$query_stringと同じです。

6
Danack

Nginxが使用するphp設定ファイルの variables_order を確認してください。

0
lg.