在我的 Mac OS X 计算机上运行时,我的 PHP Web 应用程序在调用
pg_connect
时崩溃(它不会从 RHEL8 服务器崩溃)。
只有在以下情况下才会发生:
这意味着当我从 CLI 运行脚本时该脚本可以工作,并且当连接到另一个运行 PostgreSQL 9.0 的 PostgreSQL 服务器时它可以完全工作(CLI 和 Apache HTTPD)。
在我的本地计算机上运行 PHP 7.4.33
当我在 Apache HTTPD 中运行崩溃脚本时,error_log 向我显示以下内容:
[Sat Nov 09 12:25:42.609490 2024] [core:notice] [pid 39732] AH00052: child pid 51781 exit signal Segmentation fault (11)
脚本非常简单:
<?php
$connString="host=<host> port=<port> user=<username> password=<password> dbname=<dbname> sslmode=disable";
$conn = pg_connect($connString);
echo "conn: [$conn]";
$result = pg_query($conn, "select 1");
echo "result: ". $result;
var_dump(pg_fetch_all($result));
?>
phpinfo()
的输出如下(仅包括相关的pgsql部分):
pgsql
PostgreSQL Support enabled
PostgreSQL(libpq) Version 16.3
PostgreSQL(libpq) PostgreSQL 16.3 on aarch64-apple-darwin23.4.0, compiled by Apple clang version 15.0.0 (clang-1500.3.9.4), 64-bit
Multibyte character support enabled
SSL support enabled
Active Persistent Links 0
Active Links 0
除了分段错误之外,错误日志没有给我任何信息。 我已经尝试过 sslmode=disable ,但没有成功。
我已经对 2 套不同的 PostgreSQL v15.x 服务器(一套是 15.8,另一套是 15.9)进行了尝试,它们都给出了相同的结果。
我可以做任何其他故障排除来查明确切的问题或我可以提供的任何其他信息吗?
最好使用 homebrew 包 https://brew.sh 或者如果你使用的是旧 Mac,你可以使用 macports https://www.macports.org/install.php,在这里你会找到解决问题更容易,尤其是因为社区更大。