You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下PHP连接PostgreSQL报错:Call to undefined function pg_Connect()

解决MacOS下PHP调用pg_connect()报错的问题

你遇到的Call to undefined function pg_connect()确实是因为PHP的PostgreSQL扩展没正确加载——虽然你通过brew安装了带PostgreSQL支持的PHP 5.5,但默认情况下这个扩展可能没启用,或者系统还在使用自带的PHP版本。下面一步步帮你排查解决:

1. 确认当前使用的PHP版本是brew安装的PHP 5.5

MacOS自带了PHP,很可能你终端或服务器用的还是系统默认版本,而非brew装的那个。

  • 终端执行:php -v,看输出的版本是不是5.5.x,如果不是,说明需要调整PATH优先级:
    编辑你的shell配置文件(比如~/.zshrc或~/.bash_profile),添加一行:
    export PATH="/usr/local/opt/php55/bin:$PATH"
    
    然后执行source ~/.zshrc(对应你的配置文件),再重新运行php -v确认版本切换成功。

2. 检查PostgreSQL扩展文件是否存在

brew安装PHP55时带了PostgreSQL扩展,但得确认文件在扩展目录里:

  • 执行php -i | grep extension_dir,找到扩展目录路径(比如/usr/local/Cellar/php55/5.5.38/lib/php/extensions/no-debug-non-zts-20121212/)
  • 进入这个目录,查看是否有pgsql.so和pdo_pgsql.so两个文件:
    ls /path/to/extension_dir | grep pgsql
    
    如果没有,可能需要重新安装PHP55并指定PostgreSQL:
    brew reinstall php55 --with-postgresql
    

3. 启用PHP的PostgreSQL扩展

找到PHP的配置文件php.ini,然后添加扩展配置:

  • 执行php --ini,找到Loaded Configuration File对应的路径(如果显示(none),可以复制/usr/local/etc/php/5.5/php.ini.default为php.ini)
  • 编辑php.ini,找到Dynamic Extensions部分,添加两行:
    extension=pgsql.so
    extension=pdo_pgsql.so
    
    注意:有些版本的PHP配置里可能只需要写extension=pgsql,但PHP5.5还是需要带.so后缀。

4. 重启本地服务器

根据你使用的服务器类型重启:

  • 如果用的是brew装的PHP-FPM:
    brew services restart php55
    
  • 如果用的是Apache(比如系统自带或brew装的):
    sudo apachectl restart
    

5. 验证扩展是否加载成功

  • 终端执行php -m | grep pgsql,如果输出pgsql和pdo_pgsql,说明扩展已加载;
  • 或者写一个简单的PHP文件info.php,内容为<?php phpinfo(); ?>,在浏览器打开,搜索"PostgreSQL",如果能找到对应的配置区块,就说明扩展生效了。

完成这些步骤后,再运行你的PHP脚本,应该就能正常调用pg_connect()了。

内容的提问来源于stack exchange,提问作者Amish Bedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:20:37