系统环境
系统:windows2016
web服务器:IIS10
PHP版本:5.6.30
带宽:3M
这里所说的“大文件”指的是200MB以内,再大的文件未经测试。
平时如果使用PHP上传文件失败,通常会找php.ini文件,设置里面的两个参数,例如设置为200MB。
upload_max_filesize = 200M
post_max_size = 200M
如果上传的文件不是很大,例如20MB左右,则可能上传成功,没任何阻碍,此时可能会想,是不是200MB也能上传成功,测试了下,失败了,明明设置了200M,为啥没生效?其实上传并非单一设置PHP相关参数就行,还得结合web服务器的一些设置。
500服务器内部错误
这是设置过php.ini之后遇到的第一个错误,由于这个错误太笼统,一直不得其解,直到翻到一篇文章讲述IIS的FAST-CGI,才知道了默认的IIS的FAST-CGI活动超时仅有70秒,显然在70秒内,200MB的文件传输不完(带宽仅3M),因此需要加大该设置。本想截图,但是有些东西不方便,所以以文字形式表述了。
1.打开IIS,点击IIS主页
2.双击“FastCGI设置”进入设置界面
3.找到要设置的PHP版本的CGI双击。
4.找到活动超时选项,点击修改其值,单位秒
5.重启IIS
如果没有相关经验,这是失败原因中最不会想到的,设置活动超时的时间的时候,注意结合上传文件的大小和自身的带宽,设置一个合理的值。
413 Request Entity Too Large
以为设置完活动时间就可以了,413错误等着你。默认IIS上最大上传仅30000000,单位字节。换算下来就是28.6MB左右。也就是说,如果不设置,你最多只能上传这么大的文件。这个设置也比较简单。
1.点击对应站点,双击“请求筛选”
2.点击右侧“编辑功能设置”
3.允许的最大内容长度下的输入框中,输入需要设置的值。
也就是说,想要上传一个比较大的文件,php.ini和IIS的设置缺一不可。