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

Brug af .pgpass fra Apache libphp5.so

Selvom php har PGPASSFILE i miljøet arver den fra apache, som bevist af getenv("PGPASSFILE") , ser det ud til, at dette miljø ikke er det, der er tilgængeligt for den delte libpq bibliotek, der i sidste ende håndterer .pgpass . Det er derfor, denne indstilling bliver ignoreret.

En løsning er at omdanne den variabel, der allerede er der, i miljøet i php, før der oprettes forbindelse til databasen:

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

Den eksplicitte putenv vil skubbe variablen på en måde, der gør den tilgængelig for libpq 's kald af getenv() . Dette er mærkeligt, da en proces normalt kun har ét miljø, men det ser ud til at virke.

Jeg har spurgt om det uoverensstemmende miljøproblem mellem udvidelser og phps kerne i et separat spørgsmål:Hvorfor er putenv() nødvendig på en allerede defineret miljøvariabel?




  1. Spring + Hibernate:Forespørgselsplan Cache Hukommelsesbrug

  2. Sådan vælger du og deltager i en forespørgsel med en tabel

  3. MySQL:Indsæt datetime i et andet datetime felt

  4. Tilføjelse af ADO.NET Entity Data Model i VS 2017, og der sker ikke noget