sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor er putenv() nødvendig på en allerede defineret miljøvariabel?

Å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] .




  1. MySQL multiplicerende underforespørgselsresultater

  2. Forespørgende oracle clob kolonne

  3. Indlæsning af XML-data får fejl, der siger, at min kontrolfil refererer til et ikke-eksisterende felt

  4. Hvordan importerer man tabeller med manglende værdier?