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

升级PHP至8.2后Docker-Compose构建报错:Cannot find config.m4

排查与解决建议

1. 清理Docker镜像缓存

Ubuntu服务器可能留存了损坏的旧镜像缓存,先彻底清理再重新拉取:

docker rmi php:8.2-apache
docker pull php:8.2-apache

构建时强制跳过缓存:

docker-compose up -d --build --no-cache

2. 调整Dockerfile中的扩展安装逻辑

  • 先补全编译依赖(部分服务器环境可能缺少基础依赖包):
    RUN apt-get update && apt-get install -y libmysqlclient-dev && rm -rf /var/lib/apt/lists/*
    
  • 尝试先解压PHP源码再安装扩展(确保扩展源码目录存在):
    RUN docker-php-source extract \
        && docker-php-ext-install pdo_mysql \
        && docker-php-source delete
    
    注:pdo是PHP核心扩展,默认已启用,无需单独安装,可通过php -m命令验证。

3. 升级Docker及Docker Compose版本

Ubuntu服务器上的旧版Docker可能不兼容PHP 8.2镜像的新特性,先查看当前版本:

docker --version
docker-compose --version

卸载旧版本后安装官方稳定版Docker,同时升级Docker Compose到对应兼容版本。

4. 更换镜像标签或源

  • 使用指定版本的镜像标签,避免拉取到不稳定的快照版本:
    FROM php:8.2.0-apache
    
  • 国内服务器可切换国内镜像源加速拉取,在Dockerfile开头添加:
    RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
    

5. 手动排查镜像内环境

启动临时容器进入镜像,手动执行安装命令定位问题:

docker run -it --rm php:8.2-apache bash

容器内依次执行:

docker-php-source extract
cd /usr/src/php/ext/pdo_mysql/
ls -l # 确认config.m4文件是否存在
docker-php-ext-install pdo_mysql # 手动执行看具体报错

如果手动执行也报错,说明镜像本身有问题,换标签或镜像源;如果正常,检查Dockerfile后续步骤是否破坏了环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:50:07