ホームページ  >  記事  >  バックエンド開発  >  $_ENV 配列が空で、環境変数が $_SERVER に表示されるのはなぜですか?

$_ENV 配列が空で、環境変数が $_SERVER に表示されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-08 09:45:02824ブラウズ

Why is my $_ENV array empty and why are environment variables appearing in $_SERVER?

空の $_ENV 変数と謎の $_SERVER の出現はなぜですか?

この複雑な PHP の問題では、ユーザーは空の $_ENV 配列に遭遇します。 .htaccess ファイルに環境変数を設定します。さらに、$_SERVER 配列内で変数が一見重複した形で不可解に表面化します。

問題の根本:

  1. $ _ENV は次によって隠されていますデフォルト:

    • php.ini の variables_order ディレクティブ (通常は「GPCS」に設定されます) は、デフォルトで「E」 (ENV) を除外します。この設定を「EGPCS」に変更すると、$_ENV が有効になります。
  2. SetEnv Variables Land in $_SERVER:

    • 環境設定.htaccess で SetEnv を使用する変数は、変数を $_SERVER 配列に配置します。 $_ENV にはありません。

謎の重複:

  • 変数は $_SERVER に 2 回出現します ([REDIRECT_FOO]および [FOO]))、Apache は元の変数名に REDIRECT_ という接頭辞を付けるためです。これは環境から発生します。

代替解決策:

  • getenv() 関数は php.ini 設定の影響を受けず、常に大文字と小文字に関係なく正しい値

概要:

これらの設定と動作の違いを理解すると、なぜ $_ENV が空になるのか、そしてなぜ環境変数が $ になるのかという謎を解明するのに役立ちます。 _サーバ。 $_ENV を設定する必要がある場合は忘れずに variables_order を変更し、環境変数を確実に取得するには getenv() を使用してください。

以上が$_ENV 配列が空で、環境変数が $_SERVER に表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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