理由は次のとおりです:
getenv()[PHP]
から取得する環境値 (php関数)は、getenv()[C]
でクエリする環境とは異なります。 (C lib関数)。 getenv()[PHP]
とは 登録されたsapiで一致を確認しています( http ://lxr.php.net/xref/PHP_5_6/ext/standard/basic_functions.c#3999
)。
apache2 sapiは、独自の環境コンテキストを介してこれを実行します( http: //lxr.php.net/xref/PHP_5_6/sapi/apache2handler/sapi_apache2.c#253 )、apacheプロセス自体からの標準OS環境ではありません。
一致するものが見つからない場合にのみ、実際のプロセスの環境でチェックします。これがgetenv()[PHP]
の理由です 値を返しますが、getenv()[C]
しません。
さて、「ハック」も単純なものです:putenv()[PHP]
、指定されたキー/値を実行中のプロセスの環境に格納します。そのため、後でgetenv()[c]
で見つけることができます。 。