500 - 内部服务器错误未出现在 error.log(或 access.log)中

500 - 内部服务器错误未出现在 error.log(或 access.log)中

我正在尝试追踪运行以下软件的新 Debian Web 服务器上的错误或错误配置:PHP/MySQL驱动网站阿帕奇。我不会在这里用详细的细节来烦你,只是想问一下:

有谁曾经观察到过网络浏览器收到“http 500 内部服务器错误“而在 apache 的错误和访问日志中没有出现任何类似的内容?目前这不是关于这里的细节,只是我相信这种奇怪的行为应该已经引导到正确的方向,因为我不相信发生这种情况的可能性有多大。

当这个内部服务器错误发生时,PHP 脚本会继续正常运行而不会出现任何故障,但它们想要传递给浏览器的结果当然永远不会出现,因为浏览器已经认为他的内部服务器错误就是世界末日。

欢迎提出任何意见/想法,

罗马。

答案1

解决了: 唉,有一个负载平衡器控制着服务器,并且该负载平衡器被设置为在 10 秒左右不活动后停止连接。现在问题解决了。500 没有出现在 apache 的 error.log 中的原因是“外部”系统(负载平衡器)停止了连接,而不是服务器本身。感谢大家的想法和帮助!希望有一天其他人会发现这很有启发性。

谨致问候,罗曼。

答案2

这可能是你的 Apache 的问题日志级别指令或可能与 PHP 相关运行时错误處理。

答案3

其他可能性:在源文件中查找@。

摘自 php 文档

警告
目前,“@”错误控制运算符前缀甚至会禁用将终止脚本执行的严重错误的错误报告。除此之外,这意味着如果您使用“@”来抑制某个函数的错误,而该函数不可用或输入错误,则脚本将立即终止,且不会有任何原因提示。

积分致 Luc M,这拯救了我和很多 CodeIgniter 用户。

答案4

500 是通过文档内联的某些内容从其他主机传来的吗?也许你的 CSS 或类似内容来自其他框?也可以尝试添加错误日志指令。使用 Firebug 或 Chrome webdev 工具找出 500 的来源,甚至可能是页面中的广告或其他内容。

还可以尝试使用 CURL 或 LWP 之类的工具发出请求,看看响应标头是什么,例如:

lwp-request -m HEAD -eSsd http://www.google.com/
HEAD http://www.google.com/ --> 200 OK
Cache-Control: private, max-age=0
Connection: close
Date: Tue, 19 Apr 2011 15:56:26 GMT
Server: gws
Content-Type: text/html; charset=ISO-8859-1
Expires: -1
Client-Date: Tue, 19 Apr 2011 15:56:26 GMT
Client-Peer: 74.125.91.99:80
Client-Response-Num: 1
Client-Transfer-Encoding: chunked
Set-Cookie:
REF=ID=b4ac3801dfbd939c:FF=0:TM=1303228586:LM=1303228586:S=nU_H2eC3zcLbTKfb;
expires=Thu,18-Apr-2013 15:56:26 GMT; path=/; domain=.google.com Set-Cookie:
NID=46=dsepCUy0iW9MDD7AkaP1-P4INDfRLTXz7l_TchQFzCGqtP4GU1EFbpn7K-sKq-ujNhpnR
Br8Cqgdyd3LyC3mxsRDOCCFoOn2OutZad7VWFs5erWVh0UNgEgkQJGqRe-; expires=Wed, 19-Oct-2011
15:56:26 GMT; path=/; domain=.google.com; HttpOnly
X-XSS-Protection: 1; mode=block

编辑:GF 发现了一个错字。

相关内容