Назад | Перейти на главную страницу

Журнал фатальных ошибок PHP - справочник

У меня есть следующая запись в журнале:

[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/

Является ли референт, показанный в этом сообщении, действительно референтом HTTP или URL-адресом, по которому произошла ошибка?

Referer = HTTP_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 и попробуйте найти запись с таким же или похожим временем и датой (похоже, что даже время и дата могут отличаться в зависимости от времени выполнения)

Это означает:

  • кто-то просматривал страницу http://example.com/de/checkout/cart/
  • и сервер, вероятно, ответил index.php или тому подобное
  • который, в свою очередь, вызвал / включил /var/www/foo/bar/Mage/Core/functions.php
  • который вызвал класс под названием Mage, которого не существует