Docker搭建PHP+MySQL环境报PDO could not find driver错误求助
解决方案
你遇到的报错由两处配置错误共同导致,按以下步骤修正即可:
1. 持久化安装PDO MySQL扩展
你手动在运行容器内执行的docker-php-ext-enable命令是临时生效的,容器重启/重建后配置会丢失,且官方PHP镜像需要先安装扩展再启用,需要修改Dockerfile将扩展安装逻辑固化到镜像里:
FROM php:7.4.24-apache RUN apt-get update -y && apt-get upgrade -y # 安装pdo_mysql扩展所需依赖和扩展本身 RUN apt-get install -y libpq-dev && docker-php-ext-install pdo_mysql RUN apt-get install tree nano -y
修改完成后重新构建服务并启动:
docker-compose build www && docker-compose up -d
2. 修正数据库连接端口配置
docker-compose.yml中db服务的端口映射3307:3306是宿主机到容器的映射,同一Docker网络内的www容器访问db服务时,需要使用db容器的内部端口3306,而非宿主机映射的3307。
修改connection.php中的端口配置:
// 原来的错误配置 // $port = 3307; // 修正为容器内部端口 $port = 3306;
验证方法
进入www容器执行以下命令,确认扩展正常启用:
docker exec -it playpen_www php -m | grep pdo
输出包含pdo_mysql即代表配置生效,此时再访问业务代码即可正常连接数据库。
内容的提问来源于stack exchange,提问作者sisko
相关产品推荐
相关产品推荐

