可通过docker exec php -v、docker run --rm 镜像名 php -v、进入容器执行phpinfo()、检查镜像标签或php -r内联命令五种方法快速获取PHP镜像版本信息,覆盖运行中容器、未启动镜像、离线环境及受限权限场景。

如果您在Docker环境中运行PHP应用,但不确定当前容器所用PHP镜像的具体版本号,则可能是由于未直接访问容器内部或未调用对应PHP二进制文件所致。以下是快速获取PHP镜像版本信息的多种方法:
一、通过docker exec执行php -v命令
该方法适用于已启动且正在运行的PHP容器,可直接在宿主机终端中调用容器内PHP CLI输出版本信息,无需修改镜像或重启服务。
1、使用 docker ps 列出所有运行中的容器,确认目标容器名称或ID。
2、执行 docker exec -it 容器名或ID php -v,输出内容包含PHP版本号、构建日期及SAPI类型。
立即学习“PHP免费学习笔记(深入)”;
3、若容器中仅安装python3或未预装php命令,可尝试替换为 php7.4 -v 或 php8.1 -v 等带版本号的二进制路径。
二、使用docker run临时运行php -v
该方法适用于尚未启动的镜像,或需验证镜像本身是否包含可用PHP二进制文件,避免对运行中容器产生干扰。
1、运行 docker run --rm 镜像名 php -v,例如 docker run --rm php:8.2-cli php -v。
2、若提示 command not found,说明该镜像可能为精简版(如-alpine),需改用 php --version 或检查是否存在 /usr/local/bin/php 路径。
3、对于多架构镜像,可添加 --platform linux/amd64 参数强制指定运行环境以避免兼容性报错。
三、进入容器交互式执行phpinfo()
该方法可获取比命令行更完整的运行时信息,包括已加载扩展、配置路径、环境变量及编译参数,适合深度排查兼容性问题。
1、执行 docker exec -it 容器名 /bin/sh 或 /bin/bash 进入容器shell。
2、创建临时PHP文件:运行 echo "" > /tmp/info.php。
3、执行 php /tmp/info.php | head -n 50 查看前50行HTML输出,其中第一部分即为PHP版本与编译信息。
四、检查镜像标签与元数据
该方法不依赖容器运行状态,仅通过本地镜像元数据推断PHP版本,适用于离线环境或只读权限场景。
1、运行 docker images | grep php 查看本地PHP相关镜像及其TAG字段。
2、对目标镜像执行 docker inspect 镜像名或ID,在输出JSON中查找 Config.Labels 或 RepoTags 字段。
3、若镜像由Docker Hub官方构建,RepoTags 中的标签如 php:8.0-fpm 或 php:7.4-apache 即代表PHP主版本号。
五、利用php -r执行内联版本探测
该方法绕过文件系统写入限制,在无权限创建文件的容器中仍可快速获取版本标识,同时支持扩展级版本查询。
1、运行 docker exec 容器名 php -r "echo PHP_VERSION;",直接输出纯文本版本号。
2、如需确认某个扩展是否启用并查看其版本,执行 docker exec 容器名 php -r "echo phpversion('opcache');"。
3、若需判断是否为PHP 8.0+,可测试联合类型语法: docker exec 容器名 php -r "function f(): string|int { echo 'ok'; } f();",成功执行则返回ok。



















