Windows Server 2019下PHP连接PostgreSQL驱动缺失求助
解决方案步骤
一、先修复PHP在IIS中无phpinfo()输出的问题
这个问题是PHP与IIS集成异常的表现,必须先解决才能继续排查驱动问题:
- 检查Plesk站点PHP配置:进入Plesk「域名」→ 对应站点 →「PHP设置」,确认已指定正确的PHP版本,且状态为启用。
- 验证IIS处理程序映射:在IIS管理器中打开对应站点的「处理程序映射」,确认存在
PHP_via_FastCGI规则,路径指向Plesk管理的PHP安装目录下的php-cgi.exe(比如C:\Program Files (x86)\Plesk\Additional\PHP\7.4\php-cgi.exe,根据你的PHP版本调整)。如果缺失,去Plesk「工具与设置」→「PHP设置」→ 对应PHP版本 → 点击「重新配置」。 - 查看PHP启动错误日志:找到php.ini中
error_log配置的日志路径,检查是否有FastCGI进程崩溃、权限不足等启动类错误。 - 测试最简phpinfo文件:在站点根目录创建
info.php,内容仅为<?php phpinfo(); ?>,直接访问该文件。若仍无输出,运行命令iisreset重启IIS,同时重启Plesk相关服务。
二、解决PostgreSQL驱动缺失问题
等phpinfo()正常输出后,再处理驱动问题:
- 匹配PHP与驱动版本:PostgreSQL的PHP驱动(
pgsql和pdo_pgsql)必须和你的PHP版本、架构(x86/x64)完全一致。Plesk管理的PHP一般自带驱动,大概率是未启用。 - 在Plesk中启用扩展:进入站点的「PHP设置」→「扩展」列表,找到
pgsql和pdo_pgsql并勾选启用,保存后重启IIS。 - 手动检查php.ini:如果Plesk里找不到对应扩展,直接编辑该站点使用的php.ini文件(路径可在Plesk的PHP设置中查看),确保以下两行没有被注释(去掉前面的
;):
同时确认PHP安装目录的extension=pgsql extension=pdo_pgsqlext文件夹中存在php_pgsql.dll和php_pdo_pgsql.dll文件。 - 验证驱动加载:在phpinfo页面搜索
pgsql和pdo_pgsql,能看到模块信息就说明驱动加载成功。 - 检查依赖库:Windows下PHP的PostgreSQL驱动依赖
libpq.dll,这个文件必须在PHP安装目录,或者系统PATH环境变量指向的目录里。Plesk安装的PHP通常自带该文件,若缺失,从PostgreSQL官网下载对应版本的客户端库,将libpq.dll复制到PHP安装目录。
三、额外排查要点
- 确认数据库连接参数:检查应用中的数据库主机、端口、用户名、密码是否正确,PostgreSQL服务是否正常运行,服务器防火墙是否允许PHP服务器访问5432端口。
- Plesk权限检查:测试将站点应用程序池身份改为
LocalSystem(测试后改回原身份),排查是否是权限不足导致无法读取驱动文件。
内容的提问来源于stack exchange,提问作者ack2v
相关产品推荐
相关产品推荐

