Å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 (https://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] .