gpt4 book ai didi

php - pg_connect - php 脚本从命令行工作,但不能从网页工作

转载 作者:可可西里 更新时间:2023-10-31 23:37:46 25 4
gpt4 key购买 nike

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

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() 来显示加载的配置文件并在两个环境中运行它。

最佳答案

我就此问题达成了解决方案。

  • 首先,我转到我的数据库服务器并在 postgresql 日志上运行 tail -f。这表明来自网页的请求甚至没有到达数据库服务器,而同一脚本从命令行运行,已连接。

  • another helpful post StackOverflow 上揭示了解决方案 - 这是一个 SELinux 问题,已通过以下方式修复:

    sudo setsebool -P httpd_can_network_connect_db on

关于php - pg_connect - php 脚本从命令行工作,但不能从网页工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com