有人修改了PHP的上传文件大小和超时设置:
upload_max_filesize限制单个上传文件的最大大小设置为你想允许的最大值,例如100M
post_max_size限制单次POST请求(包含文件和表单数据)的总数据量必须大于upload_max_filesize。如果预计同时上传多个文件,需要设置得更大。例如,upload_max_filesize设为100M,这里可设为120M
memory_limit限制单个PHP脚本能占用的最大内存必须大于post_max_size。通常设为post_max_size的1.5-2倍。例如256M
max_execution_time限制PHP脚本的最大执行时间(秒)上传大文件需要较长时间,建议调大,例如600。若设为0则无限制
max_input_time限制脚本解析请求数据的最大时间(秒)建议与max_execution_time保持一致或略大,例如600
重要:重启IIS服务器使配置生效。
但是上传大文件依然提示一下错误,通过对日志文件发现,是FastCGI超时设置在作祟。
立即修改IIS的FastCGI超时设置(最关键步骤):
打开IIS管理器。
在左侧连接中选中您的服务器(顶级节点),然后双击中间的“FastCGI设置”。
找到您PHP的条目(例如C:\Program Files\PHP\php-cgi.exe),选中它,然后点击右侧的“编辑”。
将Activity Timeout和Request Timeout的值都修改为300或更大。
点击“确定”保存,然后重启即可解决问题
这次问题的核心是IIS FastCGI的超时设置,而不是PHP本身的上传限制。这是一个非常经典的“改了PHP以为万事大吉,结果被Web服务器拦了一道”的案例。当您下次再开发类似功能(尤其是涉及大文件、耗时操作)时,可以优先考虑“客户端直传”模式。这能帮您从根源上规避Web服务器、PHP执行时间、带宽等所有相关限制,也是业内处理大文件上传的标准做法。

