FastCGI服务器错误500
问题描述:
我有一个Ubuntu虚拟服务器,我托管我的PHP网站的最新版本的Plesk 12和PHP 5.5。有时(我相信当我一个接一个打开页面时),我得到一个内部服务器错误信息。FastCGI服务器错误500
当我刷新页面时,网站立即再次正常,但有时在大约一分钟后错误信息消失后来。
这是我得到的网页上:
内部服务器错误500
服务器遇到一个内部错误或配置错误, 无法完成您的请求。
错误日志:
[fcgid:警告] [PID 26583](104)通过对等连接复位:客户端(IP 地址)] mod_fcgid:从FastCGI的服务器错误读取数据,引荐: (URL这里)
[芯:错误] [PID 26583] [客户端(IP地址)]脚本输出 头之前结束:index.php的,引用者:(相同的URL这里)
答
鉴于你的错误日志,它看起来像索引页想要写一个HTTP头(带有header()或set_cookie或类似的)后,它打印定期输出,在你的情况下可能是一个警告消息,由于连接中断。
我想要做的是在php.ini中禁用页面中的所有错误输出,但仍然记录错误。
PHP只能输出HTTP报头字段之前的页面上的任何其他常规输出,警告和错误消息包括在内。因此,如果您只将所有错误和警告指向日志文件,并且将打印在页面上,那么在HTTP头之前将不会有输出,并且应该可以正常工作。
答
如果任何 PHP脚本导致错误,请尝试以下步骤:
- 开关从FastCGI的到CGI
- 触发另一个请求出错
- 检查
error_log
实际的错误,解决这些问题相应地 - 切换回FastCGI
如果像apache.conf
这样的配置文件在它们中有错误它将不会出现在启动FastCGI的错误日志中。
感谢您的回答。 我确实已经在一些页面上声明了头后有几个header()函数,通常对于ob_start()可以正常工作。 我禁用了所有错误输出,但内部服务器错误仍然存在。 – Phantax 2014-11-24 15:22:18
好吧,下一个调试步骤将增加错误日志级别并将所有日志输出打印到日志文件。我假定日志输出中的第二行不会再出现失效错误输出。所以现在你需要弄清楚在哪一点PHP脚本死亡。您可以通过向脚本添加error_log语句来完成此操作。请尝试增加pho.ini中每个脚本允许的最大内存消耗量。这是PHP中常见的问题来源(尽管这通常会被记录下来)。 – 2014-11-24 17:48:42
对于迟到的回复感到抱歉。不幸的是,我不能完全按照错误记录步骤进行,因为我不是真正的专业人员。如果这是正确的,我将error_reporting更改为〜E_ALL。 memory_limit目前在256M。 (我应该增加吗?)。但有一件事我发现:我刚刚创建了一个只包含一个html链接的新php文件,并且在一个新标签中快速打开这个相同的文件,并得到相同的内部服务器错误。但是很少见(虽然文件很小?)。也许失败是不是在脚本,但在服务器? – Phantax 2014-11-29 14:30:25