Apache環境でsetenvと同等のものは何ですか? Apacheで私はenv "SOMEENV"を設定し、$ _ENV ['SOMEENV']経由でPHPにアクセスできますが、nginx + php-fpmを使ってどのように行うのか分かりません。
私は当初、私のphp-fpmプールの設定でENV [SOMENEV] = testを設定しなければならないと考えましたが、var_dump($ _ ENV)は何も返しません。
ヒント
Apache環境でsetenvと同等のものは何ですか? Apacheで私はenv "SOMEENV"を設定し、$ _ENV ['SOMEENV']経由でPHPにアクセスできますが、nginx + php-fpmを使ってどのように行うのか分かりません。
私は当初、私のphp-fpmプールの設定でENV [SOMENEV] = testを設定しなければならないと考えましたが、var_dump($ _ ENV)は何も返しません。
ヒント
nginxはphpインタープリタをそのプロセスに埋め込まないため、phpの環境に影響を与える方法がありません。それはfastcgi_paramディレクティブを介してPHPにパラメータを渡します。あなたはちょうどあなたがあなたのparamsの残りの部分を設定するものを追加して、$ _SERVER経由でアクセスすることができます。
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SOMEENV test;
fastcgi_pass php;
}
が$_ENV
変数の可用性がphp-で使用されるphp.iniのvariables_order
の設定に依存することに注意してくださいfpm。デフォルトはEGPCS
で、E
は環境ですが、Ubuntu 12.04ではGPCS
でした。
; This directive determines which super global arrays are registered when PHP
; starts up. G,P,C,E & S are abbreviations for the following respective super
; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty
; paid for the registration of these arrays and because ENV is not as commonly
; used as the others, ENV is not recommended on productions servers.
それは常に利用可能であるgetenv()
を使用することをお勧めします:php.iniの自体は$_ENV
に関する警告を運びます。 FPMプールで設定した変数がこのように取得できることがわかりました。
php-fpm.d/www.confの変数をすべて設定しました。これらの変数へのアクセスは$ _SERVERを使用する唯一の方法であり、$ _ENVはアクセスできませんこれらの変数。 誰でも考えがありますか?
こんにちは、お返事ありがとうございます。さて、私は$ _SERVER ['SOMEENV']に注入することができますが、$ _ENV ['SOMEENV']のために何かを提供することができますか? – Josh
$ _SERVER配列エントリはWebサーバによって作成されますが、$ _ENV変数はPHPインタプリタが動作している環境からインポートされ、多くはPHPが動作しているシェルによって提供されます。 Apacheの場合、PHPインタプリタはApacheプロセスに組み込まれていますが、Nginxではそうではありません。 IOW、Nginxで$ _ENV変数を設定することは可能ですが、$ _SERVERはそれが得られるほど良好です。 – Dayo
NGINXに 'env'指令がありませんか? – CMCDragonkai