Dockerfile升级PHP从7.3到7.4时docker-php-ext-install执行失败
Dockerfile PHP7.3升7.4 executor failed错误排查
报错信息
executor failed running [/bin/sh -c docker-php-ext-install bcmath
ctype dom gd hash iconv intl mbstring
mysqli opcache pdo_mysql simplexml sockets soap
sodium xsl zip ;]: exit code: 2
错误原因
- PHP 7.4 已将
hash、ctype、iconv、simplexml、sodium扩展纳入核心默认内置,无需通过docker-php-ext-install手动安装,保留这些扩展在安装列表中会触发命令执行错误,返回状态码2 - 原配置中使用的APCU扩展版本5.1.18对PHP7.4的兼容性不足,也可能引发安装阶段异常
解决方案
- 调整
docker-php-ext-install的扩展列表,删除上述5个内置扩展 - 将APCU版本升级到兼容PHP7.4的5.1.21及以上版本
- 可选:在apt安装命令末尾增加缓存清理逻辑,避免冗余文件占用镜像空间,同时减少包缓存导致的安装异常
修改后对应片段代码
# 升级APCU版本 ENV APCU_VERSION=5.1.21 RUN apt-get update && apt-get install -y --no-install-recommends gnupg \ netcat \ sudo \ libicu-dev \ libfreetype6-dev \ libjpeg-dev \ libpng-dev \ libsodium-dev \ libxml2-dev \ libxslt-dev \ libzip-dev \ rsync \ unzip \ git \ openssh-client \ && apt-get clean && rm -rf /var/lib/apt/lists/* \ ; RUN pecl install apcu-${APCU_VERSION} RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ RUN docker-php-ext-install \ bcmath \ dom \ gd \ intl \ mbstring \ mysqli \ opcache \ pdo_mysql \ sockets \ soap \ xsl \ zip \ ;
修改后重新构建镜像即可解决该报错。
内容的提问来源于stack exchange,提问作者user11931805
相关产品推荐
相关产品推荐

