2016-06-21 21 views
4

データベースサーバ(CentOS)にアクセスするために設定したCentOS Apache Webサーバがあります。データベースサーバーのpg_hba.confにWebサーバーのエントリがあります。私はWebサーバーを実行しているマシンのコマンドライン(bashの下の "php -a"を使用)で問題なく接続できます。ここで(マングルされた資格情報を使用して)私のスクリプトコマンドラインからこのスクリプトを実行pg_connect - phpスクリプトはコマンドラインから動作しますが、Webページからは動作しません

if(pg_connect("host=192.168.6.11 port=5432 dbname=C_test user=Cuser password=c1811wet")) { 
    echo 'connected'; 
} else { 
    echo 'not'; 
} 

、私は「接続」を取得です。私がウェブページ(http://some.host.name/test.php)として走るとき - 'not'。

アイデア?私の検索では、postgresql.confのlisten = '*'設定か、pg_hba.confにWebサーバーipを追加するようになっていますが、両方とも検索されています。

更新:

@Jorge - WebサーバとDBサーバは異なるIPアドレスにあります。

@Nicarusラインはpg_hba.confのに追加しました:

host C_test  Cuser 192.168.100.166  255.255.255.255 md5 

私はそれがこのIPからのアクセスを許可するように取り組んでいるかなり確信して - 述べたように、私はそれが接続されているコマンドライン上でスクリプトを実行する場合Webページからは実行されません。

@lwb - 提案してくれてありがとう - 私は、提案された行をpg_hba.confに追加し、postgresqlサービスを再起動しようとしました。サービスはきれいになりますが、動作に変化はありません。コマンドラインでは接続できますが、Webページからは接続できません。

@Massimiliano - 私は同じ/etc/php.iniを使用していて、コマンドラインでもコマンドラインでも同じ一連の追加のiniファイル(コマンドラインでは無視されるapc.iniを除く)を解析しているようです。ウェブサーバー私は、phpinfo()を使用してLoaded Configuration Fileを表示し、両方の環境で実行しました。

+0

sudoのsetsebool -P httpd_can_network_connect_dbは、データベースと同じサーバーにあるサイトですか? –

+0

追加したレコードをpg_hba.confファイルに投稿します。 – Nicarus

+0

WebサーバーのIP接続が許可されていますか? pg_hba.confでこれを試してください: 'host all all 0.0.0.0/0 trust' – lwb

答えて

1

この問題で解決に達しました。

  • まず、私はdbserverに行き、postgresqlログでtail -fを実行しました。これは、Webページからのリクエストがdbserverに届かず、コマンドラインから実行された同じスクリプトが接続されていることを示しています。 StackOverflowの上

  • another helpful postソリューションを明らかにした - それは、以下で固定、SELinuxの問題だ:

関連する問題