如何在Docker Compose中为WordPress配置PHP 8.1+版本
解决Docker中WordPress PHP版本不足的问题
核心问题
你当前使用的wordpress:latest镜像自带的PHP版本低于8.1,而单独创建的php服务和WordPress容器没有关联,所以站点依然使用旧版本PHP。下面提供两种解决方案,优先推荐方案一(最简单):
方案一:直接使用官方指定PHP版本的WordPress镜像
官方WordPress镜像提供了带明确PHP版本的标签,比如wordpress:php8.1-apache,这个镜像已经集成了Apache和PHP 8.1,直接替换原有配置即可:
修改后的docker-compose.yml配置
# version: '3.1' services: wordpress: # 替换为带PHP8.1的官方镜像 image: wordpress:php8.1-apache container_name: WP_name restart: always volumes: - ./wordpress:/var/www/html environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_NAME: dbname WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: password ports: - 8081:80 db: image: mysql:8 container_name: mysql_WP restart: always command: "--default-authentication-plugin=mysql_native_password" environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: dbname MYSQL_USER: user MYSQL_PASSWORD: password volumes: - ./schema:/docker-entrypoint-initdb.d phpmyadmin: image: phpmyadmin/phpmyadmin restart: always ports: - 8082:80 environment: PMA_HOST: db # 修正拼写错误:PASSWORT → PASSWORD MYSQL_ROOT_PASSWORD: password # 删掉无用的php服务,因为官方镜像已包含PHP8.1
操作步骤
- 保存修改后的
docker-compose.yml - 重启容器:
docker-compose down && docker-compose up -d - 验证PHP版本:
输出应该显示PHP 8.1.x版本,此时Composer的版本提示会消失。docker exec WP_name php -v
方案二:自定义架构关联你的PHP-FPM服务(进阶)
如果需要自定义PHP扩展或使用Nginx作为Web服务器,可以采用Web服务器+PHP-FPM的分离架构:
- 保留你的
php服务,确保WordPress代码目录挂载到该容器 - 添加Nginx服务,配置反向代理到PHP-FPM容器
- 移除原有的
wordpress服务,改用纯Web服务器镜像
不过这个方案需要额外配置Nginx的default.conf,适合有一定Docker基础的用户,新手优先选方案一。
内容的提问来源于stack exchange,提问作者rikardo85
相关产品推荐
相关产品推荐

