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

Usando .pgpass de Apache libphp5.so

Aunque php tiene PGPASSFILE en el entorno hereda de Apache, como lo demuestra getenv("PGPASSFILE") , parece que este entorno no es el que está disponible para el libpq compartido biblioteca que finalmente maneja .pgpass . Es por eso que esta configuración se ignora.

Una solución es volver a colocar en el entorno la variable que ya está allí, en php antes de conectarse a la base de datos:

if (getenv("PGPASSFILE")!="")
  putenv("PGPASSFILE=".getenv("PGPASSFILE"));

El putenv explícito empujará la variable de manera que esté disponible para libpq llamadas de getenv() . Esto es extraño ya que normalmente un proceso tiene un solo entorno, pero parece funcionar.

Pregunté sobre el problema del entorno discordante entre las extensiones y el núcleo de php en una pregunta separada:¿Por qué se necesita putenv()? en una variable de entorno ya definida?