最近博客会有大变动哦,敬请期待~ (最近也不知道是要多久,鸽鸽鸽)

MENU

php 上传图片 500 Internal Server Error 错误

June 24, 2019 • Read: 152 • PHP,技术文章

前言

今天准备上线一个项目然后发现图片上传不了一直500,试了很多次只有100kb左右的图片能够上传成功,应该是图片大小超出限制,报错代码如下:

20190624195349.jpg

思路

按道理来说如果是php的大小限制的话他会有报错信息,不至于500thinkPHP的话就更不可能了,如果是thinkPHP的话他肯定是有容错处理的,提示信息肯定会更加清楚,不可能500。那么就肯定是web服务器的原因了。我部署的环境是Apache+PHP,那么已经有了方向就从Apache入手。
先查询了一下Apache日志里记录的错误:

mod_fcgid: HTTP request length 136000 (so far) exceeds MaxRequestLen (131072)

意思是请求长度超出了最长长度,但以前从没见过MaxRequestLen这个参数,到httpd.conf中找了一圈、没有找到,又到php.ini找了还是没有。

于是去官方找到了,官方文档有以下内容:

Description: maximum HTTP request length
Syntax: FcgidMaxRequestLen bytes
Default: FcgidMaxRequestLen 131072

131072正好就是128K

20190624201529.jpg

解决方法

httpd.conf中添加一条

MaxRequestLen 10485760

修改请求限制为10M 参数单位是字节。
QQ截图20190624202623.jpg

这个只是解决Apache的限制,如果是PHP上的限制还需要根据实际情况来修改php.ini配置文件中的以下参数:

  • upload_max_filesize(上传文件的大小限制)
  • post_max_size(post传输的大小限制)
  • max_execution_time(页面执行最大时间)
  • max_input_time(页面接受数据最大时间)
  • memory_limit(页面占用的最大内存)