413 Request Entity Too Large

想上传一个新的主题,结果返回浏览器显示“413 Request Entity Too Large”。

第一感觉就是wp跑在docker里的原因,后从百度搜索了一下如下:

超过了nginx配置的限制,

看了一下nginx.conf发现没有设置client_max_body_size,这个参数默认只是1M,也就是说发布的文章内容大小不能超过1M

解决办法:

增加如下两行到nginx.conf的http{}段, 增大nginx上传文件大小限制

#设置允许发布内容为8M
client_max_body_size 8M;
client_body_buffer_size 128k;

另外如果运行的是php,那么还要检查php.ini,这个大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,这样就不会因为提交数据大小不一致出现的错误。

post_max_size = 8M
upload_max_filesize = 6M

修改完配置后,别忘记重新加载。

虽然这样修改能解决一般问题,相信大家都会问post_max_size 和 upload_max_filesize 之间关系是什么?

从字面含义看一个是上传文件最大值upload_max_filesize,一个是通过POST提交数据的最大值post_max_size ,一般在php中用的是POST方式上传。

所以php.ini中设置 memory_limit > post_max_size > upload_max_filesize

当上传大文件时为了防止网速慢时超时现象,需要适当调大max_execution_time的值。

首先创建一个 upload.ini 文件,随意放在哪里都可以。我的在:/home/wordpress/upload.ini

里面写入配置,然后保存。

file_uploads = On   memory_limit = 256M   upload_max_filesize = 32M   post_max_size = 32M   max_execution_time = 360

然后把正在运行的容器停止:

docker container stop wordpress

删除:

docker container rm wordpress

最后重新运行:

docker run --name wordpress --link db:mysql -p 32768:80 -e WORDPRESS_DB_HOST=mysql:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=root -e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_TABLE_PREFIX=wp_ -v /home/wordpress/upload.ini:/usr/local/etc/php/conf.d/uploads.ini -d wordpress

这条命令和之前的区别就是加了一条 -v 命令,表示使用我们刚才创建的文件配置。

冒号前面的路径写你自己创建的 upload.ini 文件路径 ,后面的不用动。

这样就可以随意上传你喜欢的主题或者插件了

发表评论

邮箱地址不会被公开。 必填项已用*标注