sql >> Database >  >> RDS >> PostgreSQL

Waarom is putenv() nodig voor een reeds gedefinieerde omgevingsvariabele?

De reden is deze:

De omgevingswaarden die u krijgt van getenv()[PHP] (de php-functie) zijn anders dan de omgeving die u opvraagt ​​met getenv()[C] (de C lib-functie). Wat getenv()[PHP] doet, controleert bij de geregistreerde sapi of er een overeenkomst is (http ://lxr.php.net/xref/PHP_5_6/ext/standard/basic_functions.c#3999 ).

De apache2 sapi doet dit via zijn eigen omgevingscontext (http://lxr.php.net/xref/PHP_5_6/sapi/apache2handler/sapi_apache2.c#253 ), niet de standaard OS-omgeving van het apache-proces zelf.

ALLEEN als er geen match wordt gevonden, wordt er gecontroleerd in de omgeving van het daadwerkelijke proces. Dus dit is waarom getenv()[PHP] geeft een waarde terug, maar getenv()[C] niet.

Nu is de "hack" ook eenvoudig:putenv()[PHP] , slaat de gegeven sleutel/waarde op in de omgeving van het lopende proces, daarom kan het later worden gevonden door getenv()[c] .




  1. Foreign key voor meerdere tabellen en kolommen?

  2. Vraag om de klant te vinden met het hoogste aantal totale aankopen

  3. Apache Spark ODBC-stuurprogramma

  4. Top 3 scores - MySQL