我有以下日志条目:
[Thu Oct 11 01:02:03 2012] [error] [client 127.0.0.1] PHP Fatal error: Class 'Mage' not found in /var/www/foo/bar/Mage/Core/functions.php on line 244, referer: http://example.com/de/checkout/cart/
此消息中显示的 referer 真的是 HTTP referer 还是实际上是发生错误的 URL?
答案1
引荐来源 = HTTP_REFERER
错误日志中的 referer 条目实际上指的是引用脚本 (HTTP_REFERER) 的页面,而不是实际发生错误的脚本。
确认
我刚刚尝试创建一个foo.html
带有超链接的文件foo.php
`foo.php 的内容
<?php
foobar();
我在 Apache 错误日志中看到的内容是:
PHP Fatal error: Call to undefined function foobar() in /var/www/foo.php on line 3, referer: http://localhost/foo.html
如何找出导致错误的脚本
如果错误深嵌在 PHP 应用程序内部,则提到的 .php 文件名将与请求 URI 不一致。要找出导致错误的请求,我们可以查看access.log
并尝试找到具有相同或相似时间和日期的条目(看起来甚至时间和日期也可能不同,具体取决于执行时间)
答案2
这意味着:
- 有人浏览了该页面http://example.com/de/checkout/cart/
- 服务器可能以 index.php 或类似文件进行响应
- 进而调用/包含 /var/www/foo/bar/Mage/Core/functions.php
- 它要求一个不存在的职业,叫做“法师”