sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué se necesita putenv() en una variable de entorno ya definida?

La razón es esta:

Los valores ambientales que obtienes de getenv()[PHP] (la función php) son diferentes al entorno que consulta con getenv()[C] (la función C lib). Qué getenv()[PHP] lo hace, está comprobando con el sapi registrado una coincidencia (http ://lxr.php.net/xref/PHP_5_6/ext/standard/basic_functions.c#3999 ).

Apache2 sapi hace esto a través de su propio contexto de entorno (http://lxr.php.net/xref/PHP_5_6/sapi/apache2handler/sapi_apache2.c#253 ), no el entorno del sistema operativo estándar del propio proceso de apache.

SOLAMENTE cuando no se encuentra ninguna coincidencia, se verificará en el entorno del proceso real. Esta es la razón por la que getenv()[PHP] devuelve un valor, pero getenv()[C] no lo hace.

Ahora, el "truco" también es simple:putenv()[PHP] , almacena la clave/valor dado en el entorno del proceso en ejecución, por lo que getenv()[c] puede encontrarlo más adelante. .