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

Docker环境配置PHP7.4+Nginx后PDO驱动无法正常加载问题求助

核心原因

你遇到的问题本质是PHP容器没有实际执行Dockerfile里的扩展安装逻辑,从你提供的php -m输出可以看到只有pdo_sqlite,没有pdo_mysql模块,和你Dockerfile里的配置预期不符。

排查方向

  • 检查docker-compose配置冲突:你的php服务同时配置了build和image: php:7.4-fpm字段,若本地已存在官方的php:7.4-fpm镜像,docker-compose默认会直接复用已有镜像,不会走本地Dockerfile构建,导致扩展安装逻辑没有执行。
  • 确认镜像来源:执行docker inspect php | grep Image,查看php容器使用的镜像ID是否和你本地构建的自定义镜像一致,还是对应官方原版镜像。
  • 检查扩展安装日志:单独构建php镜像时查看输出,确认是否存在依赖缺失导致pdo_mysql安装失败的情况,官方原版php-fpm镜像默认缺少部分系统依赖,可能导致扩展安装静默失败。

解决方案

  1. 修改docker-compose.yml的php服务配置,移除和官方镜像重名的image配置,替换为自定义镜像名,避免镜像复用冲突:
php:
  build:
    context: .
  container_name: php
  image: my-php:7.4-fpm # 替换为自定义镜像名,避免和官方php:7.4-fpm重名
  volumes:
    - ./api:/usr/share/nginx/www
  1. 完善Dockerfile,提前安装扩展所需的系统依赖,避免安装失败:
FROM php:7.4-fpm
# 安装系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    default-mysql-client \
    libonig-dev \
    && rm -rf /var/lib/apt/lists/*
# 安装并启用PHP扩展
RUN docker-php-ext-install mysqli pdo pdo_mysql \
    && docker-php-ext-enable pdo_mysql
  1. 强制重新构建镜像并启动服务:
docker-compose up -d --build
  1. 验证配置生效:进入php容器查看模块是否安装成功:
docker exec -it php php -m | grep pdo

正常输出会包含pdo_mysql,此时站点即可正常识别PDO驱动。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:48:04