php 上传图片 500 Internal Server Error 错误
前言
今天准备上线一个项目然后发现图片上传不了一直500
,试了很多次只有100kb
左右的图片能够上传成功,应该是图片大小超出限制,报错代码如下:
思路
按道理来说如果是php
的大小限制的话他会有报错信息,不至于500
,thinkPHP
的话就更不可能了,如果是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
。
解决方法
在httpd.conf
中添加一条
MaxRequestLen 10485760
修改请求限制为10M 参数单位是字节。
这个只是解决Apache
的限制,如果是PHP
上的限制还需要根据实际情况来修改php.ini
配置文件中的以下参数:
upload_max_filesize
(上传文件的大小限制)post_max_size
(post传输的大小限制)max_execution_time
(页面执行最大时间)max_input_time
(页面接受数据最大时间)memory_limit
(页面占用的最大内存)