Årsagen er denne:
De miljøværdier du får fra getenv()[PHP]
(php-funktionen) er anderledes end det miljø, du forespørger på med getenv()[C]
(Clib-funktionen). Hvad getenv()[PHP]
gør, tjekker med den registrerede sapi for et match (http ://lxr.php.net/xref/PHP_5_6/ext/standard/basic_functions.c#3999
).
Apache2 sapi'en gør dette gennem sin egen miljøkontekst (http://lxr.php.net/xref/PHP_5_6/sapi/apache2handler/sapi_apache2.c#253 ), ikke standard OS-miljøet fra selve apache-processen.
KUN når der ikke er nogen match fundet, vil den kontrollere miljøet for den faktiske proces. Så det er derfor getenv()[PHP]
returnerer en værdi, men getenv()[C]
ikke.
Nu er "hacket" også simpelt:putenv()[PHP]
, gemmer den givne nøgle/værdi i miljøet for den kørende proces, hvorfor den kan findes senere af getenv()[c]
.