立即注册【分享大片】 登录
BluRayCD Forum 返回首页

kmxmxy的个人空间 https://forum.bluraycd.com/?1 [收藏] [复制] [RSS]

日志

修改Apache(默认128K)以FastCGI模式运行PHP时上传附件大小限制

已有 1094 次阅读2013-4-12 00:22 |个人分类:apache|系统分类:服务器| windows, apache, fastcgi, PHP上传, 附件大小

困惑我几天的问题终于解决了.如下.

我把discuz论坛从centos 6.0转移到 windows+apache+fastcgi php下后,发现居然有些文件不能上传.于是google,得到以下结果:

##################################################################

file_uploads  =  on  ;是否允许通过HTTP上传文件的开关。默认为ON即是开

upload_tmp_dir  ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹

upload_max_filesize  =  100m  ;望文生意,即允许上传文件大小的最大值。默认为2M

post_max_size  =  100M ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M

但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得关心关心下面的参数:

max_execution_time  =  600 ;每个PHP页面运行的最大时间值(秒),默认30秒

max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒

memory_limit  = 128M ;每个PHP页面所吃掉的最大内存,默认8M

##################################################################

这些我都试过,没用.

经过多次上传,好像与文件类型无关,感觉好像是文件大小有问题,小文件可以上传,大文件总是出现以下错误页面:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, yutaohu** 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.

甚至一度想换个版本的discuz试试,幸亏没有,不然又白忙活了.

没办法,只能查看系统错误日志,discuz 6.0没看到错误日志,于是就打开apache目录下的日志文件夹,在 D:\Apache2.2\logs\ 下有几个日志文件,先上传小文件,没问题,再上传大文件,待出现问题时,在error.log里发现有这一行:

[Tue Feb 14 22:43:37 2012] [warn] [client 183.93.170.223] mod_fcgid: HTTP request length 139040 (so far) exceeds MaxRequestLen (131072), referer: http://cn.ddns.us/post.php?action=edit&fid=3&tid=46&pid=46&page=1&extra=page%3D1

我终于发现了问题:
HTTP request length 139040 (so far) exceeds MaxRequestLen (131072)

通过google翻译(TMD没google的日子真是受不了),我知道上传的文件超过了MaxRequestLen的限制.131072正好是128K.
然后来解决这个问题,TMD居然我没找到这个参数,php.ini中没有这个参数,httpd.conf中也没有这个参数,我把php和apache目录里有其他配置文件也粗略地看了一下,还是没找到,于是,google,出来的全是E文,第一个是apache官网的网页(http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html),其中有这样一行
Default: FcgidMaxRequestLen 131072
说明这个参数是fcgi模块的,默认是 131072

莫非根本就没写这个参数?我补上试试,于是,在httpd.conf中fastcgi php配置中加上一句:
MaxRequestLen 1024000

然后重启apache,上传,TMD问题解决了.
至于MaxRequestLen参数与其他限制php文件上传大小的参数之间的关系,有空再折腾吧.

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册【分享大片】

小黑屋|手机版|Archiver|4K蓝光论坛

GMT+8, 2024-4-19 18:02

Copyright © 2001-2021, Gadaddy Cloud.

返回顶部