ApacheでSetEnvを使用して、PHP using $_SERVER[the_variable]
。
現在、私はPerl CatalystとNginxに切り替えていますが、Nginxの「env」ディレクティブは同じではないようです。それは動作しません。どうすれば達成できますか?
誰かがより良いアプローチを提案できる場合や、以前のシステムがNginxで動作しない場合に備えて、背景画像を次に示します。
NGINXは、Apacheのようにバックエンドプロセスを管理しないため、環境に影響を与えることはできません。 NGINXから新しい$_SERVER
PHP変数を設定するには、残りの新しいfastcgi_param
エントリを追加する必要があります。fastcgi_params
またはfastcgi.conf
。
location / {
...
fastcgi_param APPLICATION_ENV production;
fastcgi_param APPLICATION_CONFIG user;
...
}
しかし、それはPHP-CGI用です
NginxはApacheのようにphpプロセスを管理しないことに注意してください。サーバーでphpを実行するものに依存して、php-fpmまたはphp-cgiを構成する必要があります。
php-cgi
...
env[APP_ENV] = production
...
php-fpm
location / {
...
fastcgi_param APP_ENV production;
...
}
fastcgi_passソケットの場所が最初に来てから、それぞれのfastcgi_paramパラメーターが必要です。 nginx configフォルダー内のファイルに変数をリストし、そのファイルを含めることもできます。通常、インクルードファイルの名前はfastcgi_paramsです。環境パラメーターは、PHP処理ブロックに簡単に追加できます。
location ~ \.php$ {
fastcgi_pass unix:/your_sock_location/nginxFastCGI.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param APP_ENV production;
include fastcgi_params;
}
Nginx.confと同じディレクトリにあるfastcgi_paramsファイルは次のようになります。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;