Alpine edge构建Docker镜像报错/bin/sh: php: not found问题咨询
问题原因
该问题确实和Alpine Edge分支的版本变动直接相关:
- Alpine Edge属于滚动开发分支,软件仓库内容会持续迭代更新,近期Edge源已经完全移除了PHP7系列的所有软件包,你Dockerfile中第二步安装的所有
php7开头的包已经不存在,即使你手动指定了v3.10的旧源,旧源的PHP7包和Edge分支的新版本系统依赖也存在兼容性问题,导致PHP安装未完成,没有生成php可执行文件,后续执行php composer-setup.php时就会报php: not found的127错误码。 - 你的Dockerfile存在跨大版本源混用的隐患,同时引用Edge分支基础镜像和v3.10的旧版本源,依赖冲突概率极高,这也是之前运行正常、后续突然报错的核心诱因。
修复方案
方案一(优先选择,稳定性最高)
固定基础镜像为最后一个默认支持PHP7的稳定Alpine版本,避免滚动分支的包变动影响:
# 替换原有 FROM alpine:edge 声明 FROM alpine:3.16
同时删除第一个RUN步骤中手动指定v3.10源的参数,所有依赖统一使用3.16官方源安装,彻底解决版本冲突问题。
方案二(必须使用Edge分支的情况)
将所有PHP相关配置同步升级到PHP8版本:
- 所有
php7开头的包名替换为对应PHP8版本的包名,例如php7改为php83、php7-fpm改为php83-fpm,对应的扩展包同步改名 - 所有配置文件路径中的
/etc/php7/修改为对应PHP版本的路径,例如/etc/php83/ - 移除第一个RUN步骤中手动指定v3.10源的参数,所有依赖统一使用Edge源安装
内容的提问来源于stack exchange,提问作者shuba.ivan
相关产品推荐
相关产品推荐

