完美解決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號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!