2014-03-28 47 views
1

我希望能夠抓住發生NOTICE錯誤的實際代碼行(不是數字,代碼行文本)。有什麼辦法可以做到這一點?我似乎無法找到一個函數,它將返回當前正在運行的腳本中某一行#上的代碼。PHP - 抓住引發錯誤的代碼

+1

[設置錯誤處理程序以引發'ErrorException'](http://php.net/manual/class.errorexception.php#errorexception.example.error-handler),然後從[堆棧跟蹤]中拉出第一行, (http://php.net/manual/exception.gettrace.php)? – Phil

回答

1

假設PHP腳本有權限讀取當前的文件,你可以這樣做:

<?php 

echo $b; // Undefined variable 

$errors = error_get_last(); 

$errorMessage = $errors['message'];  
$pathToScript = $errors['file']; 
$line = $errors['line']; 

$arrayOfLines = file(__FILE__); 

echo "The error message was: '$errorMessage occured in $pathToScript'"; 
echo "The line of code that caused the error is: \n"; 

highlight_string($arrayOfLines[$line-1]); 

輸出:

錯誤消息是:「未定義的變量:乙發生在/路徑/to/script.php」

導致錯誤的代碼行是:echo $b;