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

PHP连接PostgreSQL数据库时触发PDO Exception:找不到驱动

解决Windows下PHP 8.2 PDO_PostgreSQL驱动找不到的问题

针对你遇到的PDO Exception提示找不到PostgreSQL驱动的问题,按以下步骤逐一排查:

1. 确认扩展文件存在

  • 打开C:/php/ext目录,检查是否存在php_pgsql.dll和php_pdo_pgsql.dll两个文件。如果缺失,重新下载完整的VS16 x86 Thread Safe版PHP 8.2安装包(避免精简版),解压后替换现有文件。

2. 正确配置php.ini

  • 将C:/php下的php.ini-development重命名为php.ini,这是PHP默认读取的配置文件。
  • 打开php.ini,找到extension_dir项,修改为绝对路径:
    extension_dir = "C:/php/ext"
    
  • 找到extension=pgsql和extension=pdo_pgsql两行,去掉前面的分号注释,不要手动添加扩展的绝对路径,依赖上面的extension_dir即可。

3. 安装VC++运行库

PHP 8.2 VS16编译版本依赖Microsoft Visual C++ Redistributable for Visual Studio 2019或2022,如果系统未安装,驱动无法正常加载。下载对应x86版本的运行库安装即可。

4. 验证扩展加载状态

创建测试脚本test.php:

<?php
phpinfo();
?>

通过PHP CLI运行(php test.php)或在Web环境访问,搜索pgsql和pdo_pgsql关键字:

  • 若能看到对应的模块信息,说明扩展加载成功;
  • 若没有,用php --ini命令查看PHP实际读取的配置文件路径,确认是否用对了php.ini。

5. 排查连接代码与数据库配置

  • 确保PDO连接字符串格式正确,示例:
    try {
        $dsn = 'pgsql:host=localhost;port=5432;dbname=your_database;user=your_user;password=your_password';
        $pdo = new PDO($dsn);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "连接成功";
    } catch (PDOException $e) {
        echo "错误: " . $e->getMessage();
    }
    
  • 确认PostgreSQL服务已启动,默认端口5432未被占用,数据库用户的连接参数与代码匹配。

6. 匹配线程安全环境

如果在Web服务器(如Apache)中运行PHP,确保Web服务器也是**线程安全(Thread Safe)**版本,与PHP的TS版本匹配,否则扩展加载会失败。CLI模式运行脚本可忽略此步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:46:18