Registro de errores fatales de PHP – referer

Tengo la input de logging siguiente:

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

¿Es el referencedor mostrado en este post realmente el referer HTTP o en realidad la URL donde ocurrió el error?

Referer = HTTP_REFERER

La input referer en el logging de errores realmente hace reference a la página que se refiere a la secuencia de commands (HTTP_REFERER) y no la secuencia de commands donde el error realmente ocurrió.

Verificación

Acabo de foo.php creando un file foo.html con un hyperlink a un file foo.php

El contenido de `foo.php

 <?php foobar(); 

Lo que obtengo en el logging de errores de Apache es:

 PHP Fatal error: Call to undefined function foobar() in /var/www/foo.php on line 3, referer: http://localhost/foo.html 

Cómo averiguar qué secuencia de commands causó el error

Si el error está nested dentro de una aplicación PHP, el nombre de file .php mencionado no sería idéntico al URI de request. Para averiguar la petición que causó el error, podemos search en el access.log e intentar encontrar una input con la misma hora o date similar (parece que incluso la hora y la date pueden variar dependiendo del time de ejecución)

Esto significa:

  • alguien navegó a la página http://example.com/de/checkout/cart/
  • y el server probablemente respondió con index.php o similar
  • que a su vez llamado / incluido /var/www/foo/bar/Mage/Core/functions.php
  • que llamó a una class llamada Mage, que no existe