PHPはCentOS 7からPostgresに接続できません。

PHPはCentOS 7からPostgresに接続できません。

Bashを介してPHPを実行しているデータベースに接続できます。

php -r '$link=@pg_connect("host=fakehost.edu port=5432 dbname=db user=user password=totallynotthepassword");if($link){echo "connected";} else { echo "no dice";}'

その結果、非常に楽しい「接続」が行われました。

しかし、Apacheが提供するファイルに同じPHPを含めてそのページに移動すると、「いいえ」という非常に悲しいメッセージが表示されます。

以下はPHPファイルのコードです。

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <?php
$link=@pg_connect("host=fakehost.edu port=5432 dbname=db user=user password=totallynotthepassword");if($link){echo "connected";} else { echo "no dice";}
?>
 </body>
</html>

私はそれがApacheユーザーに関連していると思いましたが、ちょうどそのユーザーと同じコードをテストして接続しました。

答え1

これはセキュリティ設定のように見え、以下を実行して変更できます。

sudo setsebool -P httpd_can_network_connect_db on

ここで答えを見つけました。https://stackoverflow.com/questions/37955681/pg-connect-php-script-works-from-command-line-but-not-from-web-page

関連情報