Mac非容器化Drupal遇SCRAM认证错误:需libpq 10及以上版本
Mac下非容器化Drupal解决“SCRAM authentication requires libpq version 10 or above”错误方案
1. 获取更高版本的libpq.pc
Mac上最便捷的方式是用Homebrew安装高版本libpq:
- 执行安装命令:
brew install libpq - 安装完成后,新版本的libpq.pc位于
/usr/local/opt/libpq/lib/pkgconfig目录下 - 若要让系统优先调用该版本,可将其pkgconfig路径加入环境变量:
要永久生效,将上述命令添加到export PKG_CONFIG_PATH="/usr/local/opt/libpq/lib/pkgconfig:$PKG_CONFIG_PATH"~/.zshrc(Zsh)或~/.bash_profile(Bash)文件中,重启终端即可。
2. 直接替换现有版本是否安全?
不建议直接替换系统默认的libpq文件。Mac系统自带的部分工具依赖旧版本libpq,强行替换可能导致这些工具运行异常。更安全的做法是通过环境变量指定优先使用新安装的libpq,或重新编译PHP时链接新版本。
3. 其他解决方案
修改PostgreSQL认证方式(临时绕过)
找到PostgreSQL的pg_hba.conf配置文件(通常路径为/usr/local/var/postgres,或你安装PostgreSQL的自定义目录),将对应Drupal数据库用户的认证方式从scram-sha-256改为md5,之后重启PostgreSQL服务:
brew services restart postgresql
重新编译PHP7.4链接高版本libpq
确保已通过Homebrew安装高版本libpq,然后重新编译PHP7.4,编译时指定链接路径:
./configure --with-pgsql=/usr/local/opt/libpq --with-pdo-pgsql=/usr/local/opt/libpq [其他编译参数] make && make install
也可以用php-build这类工具简化编译流程。
升级PHP版本
如果业务允许,将PHP升级到8.0及以上版本。新版本PHP默认适配的libpq版本更高,原生支持SCRAM认证,无需额外配置。
内容的提问来源于stack exchange,提问作者osama yaccoub
相关产品推荐
相关产品推荐

