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

问题描述:

我有一个CentOS apache Web服务器,我已经设置访问我们的数据库服务器(也是CentOS)。数据库服务器上的pg_hba.conf中有一个Web服务器条目。我可以在运行Web服务器的机器的命令行(使用bash下的“php -a”)连接时没有问题。这是我的脚本(凭证凭证被损坏)pg_connect - php脚本可以从命令行运行,但不能从网页运行

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

想法?我的搜索都让我在postgresql.conf中设置listen ='*'设置,或者将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()来显示加载配置文件并在两种环境中运行它。

+0

是该网站在同一台服务器作为数据库? –

+0

发布您添加到pg_hba.conf文件的记录。 – Nicarus

+0

您的网络服务器IP被允许连接?在pg_hba.conf上试试这个:'host all all 0.0.0.0/0 trust' – lwb

我就此问题达成了一项决议。

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

  • another helpful post在计算器上显示的解决方案 - 这是一个SELinux的问题,请通过下面的固定:

    须藤setsebool -P httpd_can_network_connect_db上