私はUbuntu Hardyにnginxをインストールし、PHPスクリプトが空のリクエスト配列を取得していること、つまりGETまたはPOST _REQUEST配列が空でした。
私がApacheに戻ったとき、それはすべてうまくいきました。
インストールnginxのバージョンは0.6.35-0ubuntu1.1〜hardy1であり、PHP is PHP Version 5.2.4-2ubuntu5.10。
何が悪いのでしょうか?
これがfastcgiモジュールの「場所」セクションに設定されているかどうかを確認してください
fastcgi_param QUERY_STRING $query_string;
Nginxのtry_files command
の機能は、query_string
が書き換えられたファイルに自動的に渡されず、明示的に渡される必要があることです。このため、_$SERVER['QUERY_STRING']
は常に空であるため、変数$_REQUEST
および$_GET
も設定されません。
Rewriteとは異なり、フォールバックが名前付きの場所でない場合、$ argsは自動的に保存されません。引数を保持する必要がある場合は、明示的に行う必要があります。
try_files $uri $uri/ /index.php?q=$uri&$args;
または引数だけで
try_files $uri $uri/ /index.php?$args;
元の引数を確実に取得したい場合は、$query_string
を使用してください。これは、$args
が読み取り専用であることを除いて、$query_string
と同じです。
Nginxが使用するphp設定ファイルの variables_order を確認してください。