使用fastcgi上传大文件时出现500个错误

我正在使用以下设置:

  • CentOS 5.9
  • Apache与Nginx的静态资源代理
  • PHP 5.4
  • FastCGI的

上传较小的文件时,一切正常。 但是,如果我尝试上传较大的文件(我还没有确定切断点),我得到500错误。

我的apache日志设置为E_ALL&〜E_NOTICE&〜E_STRICT&〜E_DEPRECATED

当第一次发生这种情况时,我检查了日志,发现POST超过了fcgi config中的MaxRequestLen。

我迅速地在php.conf文件和cPanel中的post_virtualHost包含文件中更改了这个。 这阻止了错误消息得到logging,但我仍然收到500错误,混淆,没有任何错误相关的logging任何。

从客户端的angular度来看,该文件似乎上传的罚款,并需要很长的时间,因为它应该(HTML5文件API报告进展正常),并在服务器已经收到完整的文件后,长的脚本执行后,500错误生成。

该文件本身是一个大型的文本文件,其中包含几个base64图像,然后拉开服务器端,使用ImageMajick(通过IMajik php扩展)转换成实际的图像文件,然后复制到不同大小的版本与不同级别的过滤/压缩适用于他们。 整个过程可能需要一段时间。 这可能是问题的一部分吗? 如果是的话,我将如何解决?

我的fcgiconfiguration是最新的,如下所示:

MaxRequestsPerProcess 1000 FcgidMaxProcesses 200 FcgidProcessLifeTime 7200 MaxProcessCount 500 FcgidIOTimeout 400 FcgidIdleTimeout 600 FcgidIdleScanInterval 90 FcgidBusyTimeout 300 FcgidBusyScanInterval 80 ErrorScanInterval 3 ZombieScanInterval 3 DefaultMinClassProcessCount 0 DefaultMaxClassProcessCount 3 FcgidMaxRequestLen 1073741824 

我试图用旧的MaxRequestLenreplaceFcgidMaxRequestLen,但仍然没有运气。

任何帮助将不胜感激。

你的剧本简直超时了吗? FcgidBusyTimeout是5分钟 – 当几个脚本同时运行时,这可能是不够的。

为什么你使用fcgi而不是mod_php? 如果你使用ngix作为反向代理和提供静态内容,那么fcgi只是另一个复杂的层面:ngix + apache很好,apache + fcgi很好,ngix + fcgi很好,ngix + apache + fcgi没有意义。