2015-01-02 10 views
6

पर PostgreSQL से कनेक्ट नहीं हो सकता है मेरे पास OSX पर वर्चुअलबॉक्स में चल रहे CentOS 7 हैं। अपाचे, PHP 5.4 और PostgreSQL 9.2 सभी चल रहे हैं। लेकिन, यह काम जब मेरे (सरल) php स्क्रिप्ट PostgreSQL से कनेक्ट करने की कोशिश करता है नहीं करता है:PHP Centos 7

चेतावनी: pg_connect(): PostgreSQL सर्वर से कनेक्ट करने में असमर्थ: सर्वर से कनेक्ट नहीं कर सकता है: अनुमति अस्वीकृत है सर्वर "127.0.0.1" पर चल रहा है और पोर्ट 5432 पर टीसीपी/आईपी कनेक्शन स्वीकार कर रहा है? लाइन पर /var/www/html/pg.php 7

चेकों में:

  • अपाचे चल रहा है
  • पीएचपी ठीक है, phpinfo() मुझसे कहता है PostgreSQL कार्यों उपलब्ध हैं
  • PostgreSQL 9.2
  • psql चल रहा है मेरी मैक कर सकते हैं ग पर स्थानीय होस्ट या 127.0.0.1 और भी 192.168.178.111
  • pgAdmin का उपयोग कर डेटाबेस से कनेक्ट कर सकते हैं onnect इस डेटाबेस के लिए आईपी पते के 192.168.178.111 का उपयोग कर
  • iptables बंद कर दिया गया
  • pg_hba.conf (बेवकूफ, मुझे पता है) किसी भी पासवर्ड के बिना सभी कनेक्शनों को स्वीकार करने के लिए बदल दिया गया है

मेजबान सब सब 0.0.0.0/0 विश्वास

लेकिन php कनेक्ट नहीं कर सकता .... यह मेरी स्क्रिप्ट है:

<?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'); 
?> 

आंतरिक कनेक्शन काम (psql), बाहरी कनेक्शन भी (एक अपने लैपटॉप पर pgAdmin) काम करते हैं, लेकिन php कनेक्शन काम नहीं करता है ...

गलत क्या चल रहा है? यह क्या है कि मैं याद कर रहा हूँ?

+0

आप अपने कनेक्शन स्ट्रिंग में उपयोगकर्ता "postgres" के लिए पासवर्ड सहित की कोशिश की है:

सुनिश्चित करें कि आप अपने वेब अनुप्रयोग डेटाबेस से बात करने की अनुमति देने के लिए सही बूलियन को निर्धारित न करें? –

+0

@ChrisV: हाँ, उसने भी कोशिश की। लेकिन इसकी आवश्यकता नहीं है, psql और pgAdmin पासवर्ड के बिना आवश्यकता होने पर पासवर्ड के बिना भी काम करते हैं। –

उत्तर

6

शायद SELinux आपके डेटाबेस कनेक्शन को अवरुद्ध कर रहा है।

sudo setsebool -P httpd_can_network_connect_db 1 
+0

धन्यवाद! मुझे पता था कि यह कॉन्फ़िगरेशन समस्या थी, लेकिन यह नहीं पता था कि कहां देखना है। –