我已经浪费了很多时间在这一点上,我被难住了。任何人都有一些见解或工作周围?提前感谢您的关注...
我的PHP/PostgreSQL/NGINX应用程序已经在MacOS上使用通过Homebrew安装的PHP-FPM运行多年。将MacOS从13.x升级到索诺马14.1后,它不再从pg_connect()返回。我也在2台机器上复制了这一点。
PHP、NGINX或PostgreSQL配置没有更改。只有MacOS升级。PostgreSQL使用psql和不同的--host参数通过相同的接口访问正确连接。
我用pg_connect()创建了一个测试脚本,尝试了多种排列,发现:
<?php
# The following line does not return and the request stops
$db = pg_connect("host=dbserver port=5432 dbname=appdb user=appuser");
echo "success!"
?>
字符串
- 当调用测试脚本时,pg_connect和pg_pconnect都死了或者没有从NGINX/PHP-FPM返回(NGINX返回“Bad Gateway”)。
- 当从命令行调用测试脚本(php-ftest.php)时,这两种方法都可以工作
- 从连接字符串中删除“host=xxx”参数对这两种情况都有效,并且它能够连接到本地postgresql(虽然不是我需要的)。
- 变体“host=ip”、“host=127.0.0.1”、“host=dnsname”、“host=localhost”都失效或不返回。(FPM)
- 我在Postgres、NGINX或PHP日志中找不到任何有用的错误,但在php-fpm.log中,我收到了数千条这样的消息:
:[pool www] child 82817在开始后0.000208秒后在信号9(SIGKILL)时退出
MacOS现在会阻止连接,直到设置为允许吗?
版本:MacOS 14.1.1,PHP 8.2.13还8.3.0,PostgreSQL 15.5服务器,还16.1. libpq 16.1,nginx/1.25.3,Homebrew 4.1.21; Apple Mac M1
1条答案
按热度按时间ff29svar1#
我遇到了完全相同的问题,只是使用PDO而不是pg_connect。
感谢您发布关于从pg_connect语句中删除
host:localhost
的说明。一旦我从PDO语句中删除了它:不工作:
字符串
作品:
型
Postgres连接又工作了。真的很奇怪。这是我的堆栈,如果它对其他人有用的话:
MacOS索诺马14.1.2(23B92),Postgresql@16(Homebrew),email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)(Homebrew),libpq 16.1(Homebrew)