ホームページ  >  記事  >  バックエンド開発  >  PHP の $_ENV と $_SERVER の両方で SetEnv 変数にアクセスできるのはなぜですか?

PHP の $_ENV と $_SERVER の両方で SetEnv 変数にアクセスできるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 07:57:02864ブラウズ

Why are SetEnv variables accessible in both $_ENV and $_SERVER in PHP?

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 を使用することをお勧めします。

追加メモ

  • getenv では、環境変数名の大文字と小文字が区別されません。
  • variables_order は、getenv の動作ではなく、$_SERVER と $_ENV の変数の順序に影響します。

以上がPHP の $_ENV と $_SERVER の両方で SetEnv 変数にアクセスできるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。