如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
注意:这是https://hub.docker.com/_/php%E7%9A%84%60arm32v7%60%E6%9E%B6%E6%9E%84%E6%9E%84%E5%BB%BA%E7%89%88%E6%9C%AC%E7%9A%84%22%E6%AF%8F%E4%B8%AA%E6%9E%B6%E6%9E%84%22%E4%BB%93%E5%BA%93%E2%80%94%E2%80%94%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%E8%AF%B7%E5%8F%82%E8%A7%81%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84https://github.com/docker-library/official-images#architectures-other-than-amd64%E5%92%8C%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8FFAQ%E4%B8%AD%E7%9A%84https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what%E3%80%82
维护者:
https://github.com/docker-library/php
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux或Stack Overflow
Dockerfile链接注意:此镜像的描述超出了Hub的25000字符限制,因此"支持的标签"列表已被删减。另请参见https://github.com/docker/hub-feedback/issues/238%E5%92%8Chttps://github.com/docker/roadmap/issues/475%E3%80%82
提交issue的位置:
https://github.com/docker-library/php/issues?q=
支持的架构:(https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/php/%E3%80%81https://hub.docker.com/r/arm32v5/php/%E3%80%81https://hub.docker.com/r/arm32v6/php/%E3%80%81https://hub.docker.com/r/arm32v7/php/%E3%80%81https://hub.docker.com/r/arm64v8/php/%E3%80%81https://hub.docker.com/r/i386/php/%E3%80%81https://hub.docker.com/r/mips64le/php/%E3%80%81https://hub.docker.com/r/ppc64le/php/%E3%80%81https://hub.docker.com/r/riscv64/php/%E3%80%81https://hub.docker.com/r/s390x/php/
已发布镜像工件详情:
https://github.com/docker-library/repo-info/blob/master/repos/php (https://github.com/docker-library/repo-info/commits/master/repos/php)
(镜像元数据、传输大小等)
镜像更新:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp
https://github.com/docker-library/official-images/blob/master/library/php (https://github.com/docker-library/official-images/commits/master/library/php)
本描述的来源:
https://github.com/docker-library/docs/tree/master/php (https://github.com/docker-library/docs/commits/master/php)
PHP是一种主要用于Web开发的服务器端脚本语言,同时也可作为通用编程语言使用。PHP可以嵌入纯HTML中,也可与多种模板引擎和Web框架配合使用。PHP代码通常由解释器处理,该解释器既可以作为Web服务器的原生模块实现,也可以作为通用网关接口(CGI)实现。
***.org/wiki/PHP
!https://raw.githubusercontent.com/docker-library/docs/01c***b2fe592c1f93a13b4e289ada0e3a1/php/logo.png
DockerfiledockerfileFROM arm32v7/php:8.2-cli COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "php", "./your-script.php" ]
然后,运行以下命令构建并运行Docker镜像:
console$ docker build -t my-php-app . $ docker run -it --rm --name my-running-app my-php-app
对于许多简单的单文件项目,编写完整的Dockerfile可能不太方便。在这种情况下,可以直接使用PHP Docker镜像运行PHP脚本:
console$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp arm32v7/php:8.2-cli php your-script.php
许多扩展已编译到镜像中,因此在费力编译更多扩展之前,值得先检查php -m或php -i的输出。
我们提供了辅助脚本docker-php-ext-configure、docker-php-ext-install和docker-php-ext-enable,以便更轻松地安装PHP扩展。
为了保持镜像较小,PHP源代码以压缩tar文件形式保存。为便于将PHP源代码与任何扩展链接,我们还提供了辅助脚本docker-php-source,用于轻松提取tar文件或删除已提取的源代码。注意:如果使用docker-php-source提取源代码,请确保在Docker镜像的同一层中删除它。
DockerfileFROM arm32v7/php:8.2-cli RUN docker-php-source extract \ # 执行重要操作 \ && docker-php-source delete
例如,如果需要带有gd扩展的PHP-FPM镜像,可以继承所需的基础镜像,并编写如下Dockerfile:
dockerfileFROM arm32v7/php:8.2-fpm RUN apt-get update && apt-get install -y \ libfreetype-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd
请记住,必须手动安装扩展的依赖项。如果扩展需要自定义configure参数,可以像此示例一样使用docker-php-ext-configure脚本。在这种情况下,无需手动运行docker-php-source,因为configure和install脚本会处理。
如果难以确定在docker-php-ext-install之前需要安装哪些Debian或Alpine软件包,请查看https://github.com/mlocati/docker-php-extension-installer%E3%80%82%E6%AD%A4%E8%84%9A%E6%9C%AC%E5%9F%BA%E4%BA%8E%60docker-php-ext-*%60%E8%84%9A%E6%9C%AC%E6%9E%84%E5%BB%BA%EF%BC%8C%E9%80%9A%E8%BF%87%E8%87%AA%E5%8A%A8%E6%B7%BB%E5%8A%A0%E5%92%8C%E5%88%A0%E9%99%A4Debian%EF%BC%88apt%EF%BC%89%E5%92%8CAlpine%EF%BC%88apk%EF%BC%89%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%8C%E7%AE%80%E5%8C%96%E4%BA%86PHP%E6%89%A9%E5%B1%95%E7%9A%84%E5%AE%89%E8%A3%85%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8C%E8%A6%81%E5%AE%89%E8%A3%85GD%E6%89%A9%E5%B1%95%EF%BC%8C%E5%8F%AA%E9%9C%80%E8%BF%90%E8%A1%8C%60install-php-extensions gd`。此工具由社区成员贡献,未包含在镜像中,请参考其Git仓库获取安装、使用和问题解决方法。
另请参见"Dockerizing Compiled Software",了解Tianon用于确定任何软件必要构建时依赖项的技术(直接适用于编译PHP扩展)。
某些扩展默认已编译。这取决于所使用的PHP版本。在容器中运行php -m可获取特定版本的扩展列表。
有些扩展未随PHP源代码提供,而是通过PECL提供。要安装PECL扩展,使用pecl install下载并编译,然后使用docker-php-ext-enable启用:
dockerfileFROM arm32v7/php:8.2-cli RUN pecl install redis-5.3.7 \ && pecl install xdebug-3.2.1 \ && docker-php-ext-enable redis xdebug
dockerfileFROM arm32v7/php:8.2-cli RUN apt-get update && apt-get install -y libmemcached-dev libssl-dev zlib1g-dev \ && pecl install memcached-3.2.0 \ && docker-php-ext-enable memcached
强烈建议用户在pecl install调用中使用显式版本号,以确保PHP版本兼容性(PECL在选择要安装的扩展版本时不检查PHP版本兼容性,但在尝试安装时会检查)。除兼容性问题外,明确版本号还能确保了解依赖项何时更新并直接控制这些更新。
与PHP核心扩展不同,PECL扩展应串行安装,以便在出现问题时正确失败。否则,PECL会跳过错误。例如,使用pecl install memcached-3.2.0 && pecl install redis-5.3.7,而不是pecl install memcached-3.2.0 redis-5.3.7。但是,docker-php-ext-enable memcached redis可以在一个命令中完成。
有些扩展既不通过核心也不通过PECL提供;这些扩展也可以安装,尽管过程自动化程度较低:
dockerfileFROM arm32v7/php:8.2-cli RUN curl -fsSL '[自定义PHP模块的URL]' -o module-name.tar.gz \ && mkdir -p module-name \ && sha256sum -c "[shasum值] module-name.tar.gz" \ && tar -xf module-name.tar.gz -C module-name --strip-components=1 \ && rm module-name.tar.gz \ && ( \ cd module-name \ && phpize \ && ./configure --enable-module-name \ && make -j "$(nproc)" \ && make install \ ) \ && rm -r module-name \ && docker-php-ext-enable module-name
docker-php-ext-*脚本可以接受任意路径,但必须是绝对路径(以与内置扩展名区分),因此上述示例也可写为:
dockerfileFROM arm32v7/php:8.2-cli RUN curl -fsSL '[自定义PHP模块的URL]' -o module-name.tar.gz \ && mkdir -p /tmp/module-name \ && sha256sum -c "[shasum值] module-name.tar.gz" \ && tar -xf module-name.tar.gz -C /tmp/module-name --strip-components=1 \ && rm module-name.tar.gz \ && docker-php-ext-configure /tmp/module-name --enable-module-name \ && docker-php-ext-install /tmp/module-name \ && rm -r /tmp/module-name
要以任意用户运行Apache变体,有两种选择:
(https://github.com/moby/moby/pull/41030),然后--user`应像对FPM那样工作。--user都应像对FPM那样工作。要以任意用户运行FPM变体,应使用docker run的--user标志(可接受容器/etc/passwd文件中的用户名/组,如--user daemon,或特定UID/GID,如--user 1000:1000)。
E: Package 'php-XXX' has no installation candidate"从https://github.com/docker-library/php/pull/542%E5%BC%80%E5%A7%8B%EF%BC%8C%E6%AD%A4%E9%95%9C%E5%83%8F%E9%98%BB%E6%AD%A2%E5%AE%89%E8%A3%85Debian%E7%9A%84PHP%E8%BD%AF%E4%BB%B6%E5%8C%85%E3%80%82https://github.com/docker-library/php/issues/551#issuecomment-354849074%E4%B8%AD%E5%AF%B9%E6%AD%A4%E6%9B%B4%E6%94%B9%E6%9C%89%E6%9B%B4%E5%A4%9A%E8%AE%A8%E8%AE%BA%EF%BC%8C%E8%A6%81%E7%82%B9%E6%98%AF%E5%9C%A8%E6%AD%A4%E9%95%9C%E5%83%8F%E4%B8%AD%E5%AE%89%E8%A3%85Debian%E7%9A%84PHP%E8%BD%AF%E4%BB%B6%E5%8C%85%E4%BC%9A%E5%AF%BC%E8%87%B4%E5%8D%95%E4%B8%AA%E9%95%9C%E5%83%8F%E4%B8%AD%E5%AD%98%E5%9C%A8%E4%B8%A4%E4%B8%AA%E5%86%B2%E7%AA%81%E7%9A%84PHP%E5%AE%89%E8%A3%85%EF%BC%8C%E8%BF%99%E5%87%A0%E4%B9%8E%E8%82%AF%E5%AE%9A%E4%B8%8D%E6%98%AF%E9%A2%84%E6%9C%9F%E7%BB%93%E6%9E%9C%E3%80%82
对于因此更改而遇到问题并寻求临时解决方法的用户,在开发适当修复时,向Dockerfile添加以下行可移除阻止(强烈警告:这将允许安装第二个PHP版本,除非确实了解后果,否则不建议这样做):
dockerfileRUN rm /etc/apt/preferences.d/no-debian-php
此错误的正确解决方法是:要么使用FROM debian:XXX并直接安装Debian的PHP软件包,要么使用docker-php-ext-install、pecl和/或phpize安装必要的其他扩展和工具。
此镜像附带默认的https://github.com/php/php-src/blob/master/php.ini-development%E5%92%8Chttps://github.com/php/php-src/blob/master/php.ini-production%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E3%80%82
强烈建议在生产环境中使用的镜像使用生产配置!
可以通过将配置文件复制到$PHP_INI_DIR/conf.d/目录来自定义默认配置。
dockerfileFROM arm32v7/php:8.2-fpm-alpine # 使用默认生产配置 RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
在许多生产环境中,还建议(构建并)启用PHP核心OPcache扩展以提高性能。有关更多详细信息,请参见上游OPcache文档。
arm32v7/php镜像有多种版本,每种版本设计用于特定用例。
某些标签可能包含bookworm或trixie等名称,这些是Debian发行版的代号,表示镜像所基于的发行版。如果镜像需要安装超出镜像自带的其他软件包,可能需要显式指定这些代号,以最大程度减少Debian新版本发布时的中断。
arm32v7/php:<version>-cli此变体包含PHP CLI工具及默认模块。如果需要Web服务器,这可能不是您要找的镜像。它设计为既可作为临时容器(挂载源代码并启动容器以运行应用),也可作为构建其他镜像的基础。
它也是唯一包含(不推荐使用的)php-cgi二进制文件的变体,这对于某些工具(如https://github.com/php-pm/php-pm%EF%BC%89%E5%8F%AF%E8%83%BD%E6%98%AF%E5%BF%85%E9%9C%80%E7%9A%84%E3%80%82
注意,arm32v7/php的所有变体都包含PHP CLI(/usr/local/bin/php)。
arm32v7/php:<version>-apache此镜像包含Debian的Apache httpd,结合PHP(作为mod_php),默认使用mpm_prefork。
Dockerfile的ApachedockerfileFROM arm32v7/php:7.2-apache COPY src/ /var/www/html/
其中src/是包含所有PHP代码的目录。然后,运行以下命令构建并运行Docker镜像:
console$ docker build -t my-php-app . $ docker run -d --name my-running-app my-php-app
建议添加php.ini配置文件;详情参见"配置"部分。
Dockerfile的Apacheconsole$ docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html arm32v7/php:7.2-apache
DocumentRoot(或其他Apache配置)某些应用可能希望更改Apache中的默认DocumentRoot(从/var/www/html)。以下演示了一种使用环境变量的方法(也可在容器运行时修改):
dockerfileFROM arm32v7/php:7.1-apache ENV APACHE_DOCUMENT_ROOT /path/to/new/root RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
类似技术可用于其他Apache配置选项。
arm32v7/php:<version>-fpm此变体包含PHP的FastCGI进程管理器(FPM),这是PHP推荐的FastCGI实现。
要使用此镜像变体,需要某种反向代理(如NGINX、Apache或其他支持FastCGI协议的工具)。
一些可能有用的资源:
以下是 arm32v7/php 相关的常用 Docker 镜像,适用于 Web 开发、内容管理、传统应用 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务