Docker环境下Laravel连接PostgreSQL出现could not find driver报错求解
修复方案
按以下顺序操作即可解决pdo_pgsql扩展未加载的问题:
- 第一步:清除镜像缓存完全重建
90%以上的同类问题都是Docker复用了旧的构建缓存导致,执行以下命令清理后重建:
docker-compose down -v --rmi all docker-compose build --no-cache docker-compose up -d
重建完成后验证扩展状态:
docker exec -it app php -m | grep pdo
输出包含pdo_pgsql即为安装成功。
- 第二步:检查本地PHP配置文件
你挂载了./php/local.ini到PHP扩展配置目录,打开该文件确认:
- 没有
disable_extensions=pdo_pgsql这类禁用规则 - 存在
extension=pdo_pgsql.so且没有被注释
修改完成后重启PHP容器即可生效。
- 第三步:调整Dockerfile扩展安装逻辑(可选,适配PHP8.0)
PHP8.0安装pgsql扩展无需额外指定configure路径,可将Dockerfile中原扩展安装相关的两行替换为以下内容,显式启用扩展:
RUN docker-php-ext-install pdo pgsql pdo_pgsql zip exif pcntl RUN docker-php-ext-enable pdo_pgsql pgsql
调整后重新执行第一步的无缓存构建流程即可。
- 兜底检查:确认Laravel环境配置
检查项目根目录.env文件中DB_CONNECTION参数值确实为pgsql,没有拼写错误或被覆盖即可,你提供的config/database.php配置无异常。
内容的提问来源于stack exchange,提问作者AC-L3S
相关产品推荐
相关产品推荐

