PHP の環境変数: SetEnv、$_ENV、$_SERVER について
Apache では、環境変数 FOO は SetEnv を使用して設定されます。 .htaccess ファイル内のディレクティブ。ただし、PHP はこの変数を $_ENV または $_SERVER に表示できます。なぜこのようなことが起こるのでしょうか?また、$_SERVER の複雑なエントリの原因は何ですか?
空の $_ENV 変数
デフォルトでは、variables_order ディレクティブを使用しない限り、PHP の $_ENV 変数は空のままです。 php.ini には E が含まれています。パフォーマンス上の理由から、これは運用環境では通常有効になりません。これを解決するには、variables_order を EGPCS に設定します。これにより、$_ENV にアクセスできるようになります。
$_SERVER の SetEnv
.htaccess で SetEnv を使用すると、 $_ENV ではなく $_SERVER の変数。この動作は直観的ではないため、誤解を招く可能性があります。
$_SERVER
SetEnv のエントリにより、[REDIRECT_FOO] や [FOO] などの $_SERVER のエントリが重複する可能性があります。 ]。これは、SetEnv が通常の環境変数 (FOO) とリダイレクト エイリアス (REDIRECT_FOO`) を作成するために発生します。
getenv 関数の代替
getenv 関数は常に取得に使用できます。 $_ENV の PHP 設定に関係なく、環境変数。 $_ENV で問題が発生した場合は、getenv を使用することをお勧めします。
追加メモ
以上がPHP の $_ENV と $_SERVER の両方で SetEnv 変数にアクセスできるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。