我可以通过 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