PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menggunakan .pgpass dari Apache libphp5.so

Meskipun php memiliki PGPASSFILE di lingkungan yang diwarisi dari Apache, sebagaimana dibuktikan oleh getenv("PGPASSFILE") , tampaknya lingkungan ini bukan lingkungan yang tersedia untuk libpq . yang dibagikan perpustakaan yang pada akhirnya menangani .pgpass . Inilah sebabnya mengapa setelan ini diabaikan.

Solusinya adalah memasukkan kembali ke lingkungan variabel yang sudah ada, di php sebelum menghubungkan ke database:

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

putenv yang eksplisit akan mendorong variabel dengan cara yang membuatnya tersedia untuk libpq panggilan getenv() . Ini aneh karena biasanya sebuah proses hanya memiliki satu lingkungan, tetapi tampaknya berhasil.

Saya telah bertanya tentang masalah lingkungan sumbang antara ekstensi dan inti php dalam pertanyaan terpisah:Mengapa putenv() diperlukan pada variabel lingkungan yang sudah ditentukan?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung persentase dari SUM() dalam kueri sql SELECT yang sama

  2. Permintaan Django dengan order_by, berbeda dan batas pada Postgresql

  3. Menyimpan Gambar di PostgreSQL

  4. MySQL vs PostgreSQL untuk Aplikasi Web

  5. Menginstal postgresql dengan Homebrew dan Rails di Mountain Lion