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