容器化部署 Wordpress 的一个坑

Wordpress 同时被 2 个专栏收录
2 篇文章 0 订阅
4 篇文章 0 订阅

容器化部署 Wordpress 的一个坑

问题描述

非容器化 nginx + docker-compose 容器化 wordpress 后,媒体库上传图片报错:HTTP 错误
在这里插入图片描述

问题解决

其实这个问题的原因非常多,网上文章一大堆(https://www.duoluodeyu.com/2402.html ),但是本文中所遇到同样问题的原因却比较诡异:nginx client_max_body_size 参数必须要和 PHP 的 post_max_size 参数值一致。

1.修改 Wordpress 容器 PHP 参数

新建 uploads.ini 文件,将该文件挂载到容器:/usr/local/etc/php/conf.d/uploads.ini 文件
uploads.ini:

file_uploads = On
memory_limit = 128M
upload_max_filesize = 512M
post_max_size = 128M
max_execution_time = 600

docker-compose 文件添加卷,将文件挂载到容器

volumes:
       - ./wp_site:/var/www/html
       - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

2. 修改 nginx client_max_body_size 参数配置

这个是坑的地方,这个参数的值必须要和上一步 PHP post_max_size 参数的值一致,否则还是报同样的 HTTP 错误。之前没注意这个问题,按照网上各种配置调整,均不起作用,后来经过各种猜测测试,其实问题的根因就在这里:nginx client_max_body_size 参数必须要和 php post_max_size 参数的值一致。

附件(完整的 Wordpress docker-compose.yaml)

容器外挂文件 uploads.ini 是定义 PHP 的一些参数配置,比如最大文件上传大小、POST 请求体大小限制、内存大小限制等等,这个文件挂载是可选的,但是如果要自定义 PHP 参数可以这么做。

version: '3.3'
services:
   db:
     image: mysql:5.7
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - ./wp_site:/var/www/html
       - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
     ports:
       - "9001:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress

相关参考文档

https://www.duoluodeyu.com/2402.html
https://github.com/docker-library/wordpress/issues/10

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

qhh0205

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值