MacOS下XAMPP环境PHP调用pg_connect()报错的解决求助
核心原因
XAMPP自带的PHP默认未启用PostgreSQL扩展,或者你修改的php.ini并非Apache实际加载的配置文件。
分步解决步骤
1. 找到真正生效的php.ini文件
创建一个phpinfo.php文件,内容如下:<?php phpinfo(); ?>将文件放到XAMPP的
htdocs目录下,访问http://localhost/phpinfo.php,找到Loaded Configuration File这一行,记录下对应的文件路径(比如/Applications/XAMPP/etc/php.ini)——这才是Apache实际加载的配置文件,不要随便修改其他路径的php.ini。2. 启用PostgreSQL扩展
打开刚才找到的php.ini文件,找到以下两行:;extension=pgsql ;extension=pdo_pgsql去掉每行开头的分号
;,保存文件。3. 确认扩展文件存在
在phpinfo页面找到extension_dir的路径(比如/Applications/XAMPP/lib/php/extensions/no-debug-non-zts-20210902),进入该目录检查是否存在pgsql.so和pdo_pgsql.so文件。如果不存在,说明XAMPP自带的PHP没有包含该扩展,需要手动安装:- 打开终端,进入XAMPP的PHP目录:
cd /Applications/XAMPP/bin - 运行
sudo ./pecl install pgsql,按照提示完成安装(安装过程中可能需要输入系统密码)。
- 打开终端,进入XAMPP的PHP目录:
4. 重启Apache服务
打开XAMPP控制面板,停止Apache服务后再重新启动,确保配置修改生效。5. 验证扩展是否启用
再次访问phpinfo.php,页面内搜索pgsql,如果能看到完整的PostgreSQL扩展配置区块,说明启用成功,此时再测试pg_connect()即可正常调用。
Apple Silicon芯片(M1/M2)额外注意
如果是ARM架构的Mac,确保XAMPP是适配arm64的版本,或者安装扩展时指定对应架构。使用pecl安装时,若出现编译错误,可先安装PostgreSQL的本地依赖:
brew install postgresql
再重新运行pecl安装命令。
内容的提问来源于stack exchange,提问作者Listopad02

