tags:

views:

37

answers:

2

Is there a php.ini directive that enables stack traces on errors? I already looked here: http://php.net/manual/en/ini.core.php. My shared-hosting does not have Xdebug installed for some reason. I tried putting these in .htaccess:

php_value track_erors On
php_value report_zend_debug 1

but no stack trace.

A: 

There's debug_backtrace. This won't work for fatal errors though, since those cannot be handled.

Example:

<?php
function exceptions_error_handler($severity, $message, $filename, $lineno) { 
    var_dump(debug_backtrace());
}

set_error_handler('exceptions_error_handler');

function c() {
echo $a;
}

c();

gives:

array
  0 => 
    array
      'file' => string '/tmp/cpu7HL5A' (length=13)
      'line' => int 9
      'function' => string 'exceptions_error_handler' (length=24)
      'args' => 
        array
          0 => &int 8
          1 => &string 'Undefined variable: a' (length=21)
          2 => &string '/tmp/cpu7HL5A' (length=13)
          3 => &int 9
          4 => &
            array
              empty
  1 => 
    array
      'file' => string '/tmp/cpu7HL5A' (length=13)
      'line' => int 12
      'function' => string 'c' (length=1)
      'args' => 
        array
          empty
Artefacto
A: 

not directly but you can call debug_backtrace() OR catch your errors and have the exception class dump its stack trace with exception::getTrace();

ToonMariner