PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Използване на .pgpass от Apache libphp5.so

Въпреки че php има PGPASSFILE в средата, която наследява от apache, както е доказано от getenv("PGPASSFILE") , изглежда, че тази среда не е тази, която е достъпна за споделения libpq библиотека, която в крайна сметка обработва .pgpass . Ето защо тази настройка се игнорира.

Заобиколно решение е да въведете в средата променливата, която вече е там, в php, преди да се свържете с базата данни:

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

Явният putenv ще избута променливата по начин, който я прави достъпна за libpq извикванията на getenv() . Това е странно, тъй като обикновено процесът има само една среда, но изглежда, че работи.

Попитах за проблема с несъгласуваната среда между разширенията и ядрото на php в отделен въпрос:Защо е необходим putenv() на вече дефинирана променлива на средата?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между потребител и роля?

  2. Многоредови актуализации на PostgreSQL в Node.js

  3. Разликата в подреждането на литералите от тип enum между PostgreSQL 9.0 и 9.1

  4. PostgreSQL еквивалент за SQL Server GROUP BY С РОЛЛУП

  5. Postgresql json подобна заявка