PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sử dụng .pgpass từ Apache libphp5.so

Mặc dù php có PGPASSFILE trong môi trường nó kế thừa từ apache, như được chứng minh bởi getenv("PGPASSFILE") , có vẻ như môi trường này không phải là môi trường có sẵn cho libpq được chia sẻ thư viện cuối cùng xử lý .pgpass . Đây là lý do tại sao cài đặt này bị bỏ qua.

Một cách giải quyết là đưa vào môi trường biến đã có ở đó, trong php trước khi kết nối với cơ sở dữ liệu:

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

putenv rõ ràng sẽ đẩy biến theo cách làm cho biến có sẵn cho libpq lệnh gọi của getenv() . Điều này thật kỳ lạ vì thông thường một quy trình chỉ có một môi trường, nhưng nó dường như hoạt động.

Tôi đã hỏi về vấn đề môi trường bất hòa giữa các tiện ích mở rộng và cốt lõi của php trong một câu hỏi riêng: Tại sao cần putenv () trên một biến môi trường đã được xác định?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql tạo tiện ích mở rộng không thành công

  2. Chuyển đổi các ký tự có dấu trong PostgreSQL?

  3. Đặt tên cho mỗi hàng trong bảng bằng một chuỗi 2 từ ngẫu nhiên

  4. postgres phát hiện các mẫu số 0 lặp lại

  5. Cách Pi () hoạt động trong PostgreSQL