2010-07-11 39 views
4

是否有一個php.ini指令,可以在錯誤上啓用堆棧跟蹤?我已經看過這裏:http://php.net/manual/en/ini.core.php。由於某些原因,我的共享主機沒有安裝Xdebug。我試着把這些放在.htaccess中:是否有一個php.ini指令可以在錯誤上啓用堆棧跟蹤?

php_value track_erors On 
php_value report_zend_debug 1 

但沒有堆棧跟蹤。

+4

「我的共享-hosting沒有安裝Xdebug出於某種原因「 - 可能是因爲他們的服務被設計爲託管應用程序。開發應該在你的本地PC上完成。沒有必要通過調試擴展來減緩活動網站的速度。 – 2010-07-12 08:27:45

回答

7

還有debug_backtrace。這對於致命錯誤不起作用,因爲這些錯誤不能被處理。

例子:

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

set_error_handler('exceptions_error_handler'); 

function c() { 
echo $a; 
} 

c(); 

給出:

 
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 
2

不直接但你可以叫debug_backtrace()或捕捉到錯誤,並有異常類轉儲它的堆棧跟蹤與exception::getTrace();

+1

很好,但這適用於例外情況,而不是錯誤。使用set_error_handler可以捕獲錯誤,但不會提供堆棧跟蹤。 – Benubird 2014-04-09 08:30:38