PHP上传文件中出现413 request Entity too Large错误的解决办法

最近在完成一个功能时碰到一个浏览器413的HTTP错误

这边需要上传3M以内的文件,上传一个2.6M的文件,报413 request Entity too Large错误,下面给出解决方式。

经过排查,发现nginx服务器错误,是因为请求长度超过了nginx默认的最大客户端最大请求大小。

post请求:

修改nginx.conf里面的几个相关的配置参数

client_body_buffer_size 10m(配置请求体缓存区大小, 不配的话)

client_max_body_size 20m(设置客户端请求体最大值)

client_body_temp_path /data/temp (设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中,注意临时路径要有写入权限)

如果上传文件大小超过client_max_body_size时,会报413 entity too large的错误。

在nginx中client_max_body_size的默认配置是1M。

我这边,所以在nginx.conf找到http,加入 client_max_body_size 8M;  在php.ini中设置upload_max_filesize以及post_max_size的值为8M,重启nginx和php服务就可以了。

业务需要,所以设置为8M,在PHP代码中直接限制文件上传大小就可以了。


还有针对get的解决方法,可以参考一下http://blog.csdn.net/u012814506/article/details/47761429


在此附上PHP中$_FILES中error返回值详解

$_FILES['files'] ['error']==0代表一切正常,其它数值的含义如下。

 1: 文件大小超出了服务器的空间大小

 2: 要上传的文件大小超出浏览器限制

 3: 文件仅部分被上传

 4: 没有找到要上传的文件

 5: 服务器临时文件夹丢失

 6:文件写入到临时文件夹出错

 7:文件写入失败

 8:php文件上传扩展没有打开

你可能感兴趣的:(PHP上传文件中出现413 request Entity too Large错误的解决办法)