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

随着以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 # 重启服务栈
```

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