pg_connect - php脚本可以从命令行运行,但不能从网页

时间:2016-06-21 22:33:40

标签: php postgresql

我有一台CentOS apache网络服务器,我已设置它来访问我们的数据库服务器(也是CentOS)。数据库服务器上的pg_hba.conf中有一个Web服务器条目。我可以在运行Web服务器的机器的命令行上使用" php -a"在bash下连接而没有问题。这是我的脚本(凭据损坏)

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) - '不是'。

想法?我的搜索都引导我进入listen =' *'在postgresql.conf中设置或将web服务器ip添加到pg_hba.conf - 但这两个都已就绪。

更新

@Jorge - 网络服务器和数据库服务器位于不同的IP上。

@Nicarus添加到pg_hba.conf的行是:

host    C_test        Cuser 192.168.100.166     255.255.255.255 md5

我很确定这是允许从这个IP进行访问 - 如上所述,如果我在它连接的命令行上运行脚本,而不是从网页运行。

@lwb - 感谢您的建议 - 我尝试将建议的行添加到pg_hba.conf,然后重新启动postgresql服务。服务干净利落,但行为没有变化 - 我可以在命令行上连接,但不能从网页连接。

@Massimiliano - 似乎我使用相同的/etc/php.ini,并在两个命令行上解析相同系列的其他ini文件(除了apc.ini,在命令行上被忽略)和网络服务器。我只是使用phpinfo()来显示加载的配置文件并在两种环境中运行它。

1 个答案:

答案 0 :(得分:1)

我就此问题达成了决议。

  • 首先,我访问了我的dbserver并在postgresql日志上运行了tail -f。这表明来自网页的请求甚至没有到达dbserver,而相同的脚本从连接的命令行运行。

  • StackOverflow上的
  • another helpful post显示了解决方案 - 它是一个SELinux问题,修正如下:

    sudo setsebool -P httpd_can_network_connect_db