完美解决Apache+PHP上传文件大小限制的问题
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
今天给一程序上传的时候,出现500的错误,看了一下,大致是上传图片超过的原始大小,错误代码如下:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, dsafdsa@qq.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
然后查询了一下网站内部Apache给与的错误提示;
mod_fcgid: HTTP request length 132480 (so far) exceeds MaxRequestLen (131072), referer:
意思应该是请求太长了,但以前从没见过MaxRequestLen这玩意,到httpd.conf中查找,没有;又到php.ini中查找,还是没有。
于是乎去官方查看,说明有这么一句:
Default: FcgidMaxRequestLen 131072
131072正好是128K。
百度找了一下,原因貌似是高版本的apache的默认请求数据改小了,也有说是fcgi运行的原因,
那就来个解决的方式,方式如下:
在httpd.conf中添加一条
# 修改fgci请求限制
MaxRequestLen 10240000
加上上面的一点代码即可;
备注:如果只需要修改单个虚拟主机的MaxRequestLen,只需要添加到 virtualhost中就行了。如果是全局的,添加到 httpd.conf
延伸阅读:
php配置项修改
还需要根据实际情况来修改php.ini配置文件中的max_execution_time(php页面执行最大时间)、
max_input_time(php页面接受数据最大时间)、memory_limit(php页面占用的最大内存)、
upload_max_filesize和post_max_size等5个参数。
修改php.ini配置文件
upload_max_filesize = 20M
post_max_size = 30M
memory_limit = 256M
如果文件过大,会出现时间问题,必要的话,做如下修改:
max_execution_time = 300
max_input_time = 600
======================以上是windows系统==========================
如果是linux系统,那就不同了,下面大致说下;
在httpd.conf,配置FastCGI参数里增加一项:
MaxRequestLen 1024000
重启Apache即可
关于liunx系统错误的延伸阅读:
<ifmodule mod_fcgid.c=
""
>
AddHandler fcgid-script .fcgi .php
FcgidConnectTimeout 20
FcgidIPCDir
/var/lib/apache2/fcgid/sock
IdleTimeout 3600
ProcessLifeTime 7200
MaxProcessCount 1000
DefaultMinClassProcessCount 3
DefaultMaxClassProcessCount 100
IPCConnectTimeout 8
IPCCommTimeout 360
BusyTimeout 300
FcgidWrapper
/usr/bin/php5-cgi
.php
MaxRequestLen 15728640
<
/ifmodule
>
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!