今天连续碰到了两个同事向我反应上传大文件(8M)失败的事情!
都是在php代码中通常使用post参数进行上传文件时,当文件的大小大于8M时,上传不能不成功。
首先,我想到了nginx的client_max_body_size参数,这个参数限定了nginx接收的http请求的body的最大值。在nginx.conf配置文件中client_max_body_size设置的值是8M。增大该值,reload nginx之后重新测试。如果文件仍然不能上传,这时引起该错误的原因最大的可能性与php的配置有关。
查看php的错误日志,里面的记录如下
PHP Warning: POST Content-Length of 8947356 bytes exceeds the limit of 8388608 bytes in Unknown on line 124
提示很明显,POST参数最大值也是8388608bytes(8M),修改php.ini中的post_max_size参数值,重启php-fpm服务进程,即可解决问题。
另外需要注意php.ini配置文件中的file_uploads、upload_max_filesize、memory_limit 等参数值。