2015-01-02 29 views
6

Tôi có CentOS 7 đang chạy trong VirtualBox trên OSX. Apache, PHP 5.4 và PostgreSQL 9.2 đều đang chạy. Tuy nhiên, khi tôi (đơn giản) php-script cố gắng để kết nối với PostgreSQL nó không hoạt động:PHP không thể kết nối với PostgreSQL trên CentOS 7

Cảnh báo: pg_connect(): Không thể kết nối đến máy chủ PostgreSQL: có thể không kết nối với máy chủ: Quyền bị từ chối là máy chủ chạy trên máy chủ "127.0.0.1" và chấp nhận kết nối TCP/IP trên cổng 5432? trong /var/www/html/pg.php trên dòng 7

Kiểm tra:

  • Apache đang chạy
  • PHP là tốt, phpinfo() nói với tôi chức năng PostgreSQL có sẵn
  • PostgreSQL 9.2 đang chạy
  • psql thể kết nối với cơ sở dữ liệu sử dụng localhost hoặc 127.0.0.1 và cũng 192.168.178.111
  • pgAdmin trên Mac có thể tôi c onnect đến cơ sở dữ liệu này sử dụng ip địa chỉ 192.168.178.111
  • iptables đã được tắt
  • pg_hba.conf đã được thay đổi để chấp nhận tất cả các kết nối mà không cần bất kỳ mật khẩu (ngu ngốc, tôi biết):

chủ tất cả mọi 0.0.0.0/0 tin tưởng

Nhưng php không thể kết nối .... Đây là kịch bản của tôi:

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 

echo 'hello world!'; 

$conn = pg_connect('host=127.0.0.1 port=5432 user=postgres dbname=postgres'); 
?> 

Kết nối bên trong hoạt động (psql), kết nối bên ngoài cũng hoạt động (pgAdmin trên máy tính xách tay của tôi), nhưng kết nối php không hoạt động ...

Điều gì đang xảy ra? Tôi đang thiếu cái gì?

+0

bạn đã thử bao gồm cả mật khẩu cho người dùng "postgres" trong chuỗi kết nối của bạn? –

+0

@ChrisV: Có, đã thử điều đó. Nhưng không cần thiết, psql và pgAdmin cũng hoạt động mà không cần mật khẩu khi không cần mật khẩu. –

Trả lời

6

Chắc chắn SELinux đang chặn kết nối cơ sở dữ liệu của bạn.

Hãy chắc chắn rằng bạn đặt boolean đúng để cho phép ứng dụng web của bạn để nói chuyện với cơ sở dữ liệu:

sudo setsebool -P httpd_can_network_connect_db 1 
+0

Cảm ơn! Tôi biết đó là vấn đề về cấu hình, nhưng không biết phải tìm đâu. –

Các vấn đề liên quan