1
我希望能夠抓住發生NOTICE錯誤的實際代碼行(不是數字,代碼行文本)。有什麼辦法可以做到這一點?我似乎無法找到一個函數,它將返回當前正在運行的腳本中某一行#上的代碼。PHP - 抓住引發錯誤的代碼
我希望能夠抓住發生NOTICE錯誤的實際代碼行(不是數字,代碼行文本)。有什麼辦法可以做到這一點?我似乎無法找到一個函數,它將返回當前正在運行的腳本中某一行#上的代碼。PHP - 抓住引發錯誤的代碼
假設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;
[設置錯誤處理程序以引發'ErrorException'](http://php.net/manual/class.errorexception.php#errorexception.example.error-handler),然後從[堆棧跟蹤]中拉出第一行, (http://php.net/manual/exception.gettrace.php)? – Phil