sql >> Databáze >  >> RDS >> PostgreSQL

Proč je potřeba putenv() na již definované proměnné prostředí?

Důvod je tento:

Hodnoty prostředí, které získáte z getenv()[PHP] (funkce php) se liší od prostředí, na které se dotazujete pomocí getenv()[C] (funkce Clib). Co getenv()[PHP] ano, kontroluje u registrovaného sapi shodu (http ://lxr.php.net/xref/PHP_5_6/ext/standard/basic_functions.c#3999 ).

Apache2 sapi to dělá prostřednictvím svého vlastního kontextu prostředí (http://lxr.php.net/xref/PHP_5_6/sapi/apache2handler/sapi_apache2.c#253 ), nikoli standardní prostředí operačního systému ze samotného procesu Apache.

POUZE když není nalezena žádná shoda, zkontroluje se v prostředí skutečného procesu. To je důvod, proč getenv()[PHP] vrátí hodnotu, ale getenv()[C] ne.

Nyní je "hack" také jednoduchý:putenv()[PHP] , ukládá daný klíč/hodnotu v prostředí běžícího procesu, proto jej lze později nalézt pomocí getenv()[c] .




  1. Dotazování na „běh“ po sobě jdoucích sloupců v Postgresu

  2. Hibernace odesílání cizích dotazů do databáze

  3. Vzdálené připojení PostgreSQL s pgAdmin

  4. Jak změnit sekundy na časovou hodnotu v MySQL