Docker部署WordPress解决“上传的文件尺寸超过php.ini中定义的upload_max_filesize值”问题

Docker部署WordPress解决“上传的文件尺寸超过php.ini中定义的upload_max_filesize值”问题

Colin Chang's photo
Colin Chang
·Feb 25, 2020·

1 min read

随着以Docker为代表的容器化技术的普及,越来越多的环境搭建服务部署都逐步走向容器化。当下基本上所有流行的系统都有对应的Docker版本,当然最流行的CMS——WordPress也不例外。

在为WordPress安装第三方主题或者插件时需要用户在后台手动进行文件上传,但如果文件体积较大时就会遇到如下常见的问题。

  • 413 Request Entity Too Large
  • 上传的文件尺寸超过php.ini中定义的upload_max_filesize值

413 Request Entity Too Large

如果使用了nginx服务器可能会遇到这个问题,这是由于nginx服务器默认限制上传文件尺寸不能超过2M,可以通过修改nginx配置文件(nginx:alpine 默认配置文件为/etc/nginx/conf.d/default.conf)修复此问题。修改内容形如:

server {
    ...
    location / {
        ...
        client_max_body_size 10m; # 设置客户端上传内容尺寸最大为10M
    }
}

修改完成后需要重启nginx服务。

上传的文件尺寸超过php.ini中定义的upload_max_filesize值

此问题是WordPress中php.ini默认允许上传的文件大小为2M,可以通过挂载配置文件修复此问题。

自定义uploads.ini文件,内容如下(尺寸限制可按需修改):

file_uploads = On
memory_limit = 256M
upload_max_filesize = 10M
post_max_size = 10M
max_execution_time = 600

将刚创建的配置文件挂载为WordPress容器的/usr/local/etc/php/conf.d/uploads.ini即可。下面以docker-compose.yml为例,配置形如:

  wordpress:
     volumes:
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

修改完成后重启docker compose服务栈即可。

docker-compose restart # 重启服务栈

此时再次尝试,就可以上传大文件了。出于安全考虑,建议主题或插件配置完成后,关闭大文件上传功能,注释到上述配置重启服务即可。

 
Share this