CLI与浏览器环境下php_pdo_pgsql扩展版本不一致问题求助
问题原因
Windows环境下,Apache进程和PHP CLI进程的DLL加载路径优先级不同,导致二者加载了不同版本的libpq.dll:
- PHP CLI运行时默认在PHP安装目录下,优先加载目录内自带的11.4版本
libpq.dll - Apache作为独立进程,其默认工作目录是自身的
bin目录,会优先加载系统目录、PATH路径中靠前位置的旧版libpq.dll(比如之前安装其他软件遗留的9.6.12版本),而非PHP目录下的正确版本
解决办法
以下三种方法任选其一,操作后均需重启Apache服务验证:
方法一:调整系统PATH优先级
- 打开系统环境变量设置(右键此电脑→属性→高级系统设置→环境变量)
- 在系统变量的
PATH条目里,将PHP安装目录(比如C:\php-8.1.3-ts-x64)移到最顶部 - 保存设置后重启Apache服务
方法二:复制PHP的libpq.dll到Apache目录
- 找到PHP安装目录下的
libpq.dll(确认版本为11.4) - 将该文件复制到Apache的
bin目录(比如C:\Apache24\bin),如果目录内已有旧版libpq.dll,直接覆盖 - 重启Apache服务
方法三:在Apache配置中指定PATH
- 打开Apache的
httpd.conf配置文件 - 在加载PHP模块的代码(比如
LoadModule php8_module "C:/php-8.1.3-ts-x64/php8apache2_4.dll")之前,添加以下配置(替换为你的PHP实际路径):SetEnv PATH "C:/php-8.1.3-ts-x64;%PATH%" - 保存配置后重启Apache服务
验证操作
重启Apache后,访问phpinfo页面,查看pdo_pgsql模块下的libpq version是否变为11.4,再运行测试脚本确认SCRAM认证错误消失。
内容的提问来源于stack exchange,提问作者NinjaScareCrow
相关产品推荐
相关产品推荐

