php 8.1 的 pdo_pgsql 驱动缺失,根本原因是该扩展未安装或未启用;需分别检查 cli 和 web 环境的 php -m 与 phpinfo(),确认 pgsql 和 pdo_pgsql 均已加载,并在对应 php.ini 中启用 extension=pgsql 和 extension=pdo_pgsql。

PHP 8.1 的 pdo_pgsql 驱动缺失,不是版本不兼容问题,而是该扩展根本没安装或没启用——PDO 本身在 PHP 8.1 中默认已内置,但 pdo_pgsql 是独立的可选扩展,必须手动安装并显式启用。
确认是否真的缺失
运行命令检查 CLI 环境:
php -m | grep -i "pgsql"
应同时看到 pgsql 和 pdo_pgsql。如果只看到 pdo(或什么都没输出),说明驱动未加载。
再查 Web 环境:
- 创建一个
info.php文件,内容为<?php phpinfo(); ?>,用浏览器访问; - 搜索 “PDO drivers”,确认列表中包含
pgsql(小写、无空格、无下划线); - 同时查看页面顶部 “Loaded Configuration File”,记下实际生效的
php.ini路径。
⚠️ 注意:CLI 和 Web 环境很可能使用不同的 php.ini,改了一个地方不代表另一个也生效。
常见原因与对应操作
-
Linux(Ubuntu/Debian)
sudo apt update sudo apt install php8.1-pgsql php8.1-pdo sudo systemctl restart apache2 # 或 nginx + php-fpm
-
Linux(CentOS/RHEL/AlmaLinux)
sudo yum install php-pgsql php-pdo # 或新版用 dnf sudo dnf install php-pgsql php-pdo sudo systemctl restart php-fpm
-
Windows(WAMP/XAMPP/PHPStudy)
编辑对应 PHP 版本的php.ini,取消以下两行注释:extension=php_pdo_pgsql.dll extension=php_pgsql.dll
确保
extension_dir指向的目录下真实存在这两个.dll文件(如C:\wamp64\bin\php\php8.1.29\ext\)。 -
宝塔面板用户
- 进入「软件商店 → PHP管理 → 安装扩展」,勾选
pgsql和pdo_pgsql; - 若安装失败(常见于 PostgreSQL 插件路径不匹配),需手动编译:
cd /www/server/php/81/src/ext/pgsql /www/server/php/81/bin/phpize ./configure --with-php-config=/www/server/php/81/bin/php-config make && make install
然后在
php.ini中添加:extension=pgsql.so extension=pdo_pgsql.so
- 进入「软件商店 → PHP管理 → 安装扩展」,勾选
验证 PostgreSQL 服务是否就绪(非驱动问题,但常被混淆)
-
sudo systemctl status postgresql或pg_isready -p 5432 - 确保
listen_addresses = 'localhost'和port = 5432在/etc/postgresql/*/main/postgresql.conf中已配置; - 确保
local all all trust或对应规则在pg_hba.conf中允许本地连接。
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











