PHP錯誤包裝?
回答
我不會沒有任何工具會自動爲你做;但我認爲這並不難,但我承認,這將需要你一些時間:-(
只是爲了拋出一些筆記,我腦海中記錄的最好的解決方案錯誤是:
- 與
set_error_handler
- 代碼的函數註冊自己的錯誤處理,使得它記錄錯誤+ GET/POST數據
- 也許這能/會/應以某種形式進行的數據庫或結構化文件(SQLite數據庫,可能是:li ght,快速,易於使用,不依賴於外部數據庫服務器,...),而不僅僅是純文件;稍後將更容易處理。
- 制定的 「報告」 應用......
- 這將需要一些時間,但是,如你所說的東西...
使用例如在手冊頁上給出的例子,可能會這樣做:首先,聲明錯誤處理函數:
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
$str = '';
switch ($errno) {
case E_USER_ERROR:
$str .= "<b>My ERROR</b> [$errno] $errstr<br />\n";
$str .= " Fatal error on line $errline in file $errfile";
$str .= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
break;
case E_USER_WARNING:
$str .= "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
$str .= "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;
default:
$str .= "Unknown error type: [$errno] $errstr<br />\n";
break;
}
$str .= print_r($_GET, true);
$str .= "\n";
file_put_contents(dirname(__FILE__) . '/log.txt', $str, FILE_APPEND);
/* Don't execute PHP internal error handler */
return true;
}
它獲取有關錯誤的信息,準備一些依賴於錯誤類型的特定錯誤消息,並將所有錯誤消息和$_GET
的轉儲文件放入文件中。
(當然,你的網絡服務器必須能夠創建/寫入到文件)
然後,註冊該處理程序:
$old_error_handler = set_error_handler("myErrorHandler");
最後,只是爲了測試,您會觸發一些錯誤:
trigger_error("test of E_USER_ERROR", E_USER_ERROR);
trigger_error("test of E_USER_WARNING", E_USER_WARNING);
trigger_error("test of E_USER_NOTICE", E_USER_NOTICE);
現在,只要你撥打頁面是這樣的:http://tests/temp/temp.php?a=10&test=glop&hello=world
;您將獲得包含此錯誤日誌:
$ cat log.txt
<b>My ERROR</b> [256] test of E_USER_ERROR<br />
Fatal error on line 34 in file /home/squale/developpement/tests/temp/temp.php, PHP 5.3.0RC4 (Linux)<br />
Array
(
[a] => 10
[test] => glop
[hello] => world
)
<b>My WARNING</b> [512] test of E_USER_WARNING<br />
Array
(
[a] => 10
[test] => glop
[hello] => world
)
<b>My NOTICE</b> [1024] test of E_USER_NOTICE<br />
Array
(
[a] => 10
[test] => glop
[hello] => world
)
在這種情況下,它是一個很醜陋的混亂......但你可能看到這一點;現在,你來建立在這得到正是你想要;-)
當然什麼,現在,你還必須發展報告界面(用戶方便,快捷,實用,和所有。 ..);這可能會是最長的部分到位:-(
而且,不幸的是,我不知道任何工具,可以幫助你......
(也許吧,如果你開始深化發展的東西,它可能會以開源方式發佈?這可能會對其他人有用;-)我可能會對某些項目感興趣,並且我確信我不是那個;-))
仍然,玩得開心!
+1:非常徹底的迴應。 – Josh 2009-08-07 19:33:06
謝謝:-)(實際上,夫婦和我的同事的,在工作中,想過PHP缺乏這些類型的報告工具的事實......但是,不幸的是,我們沒有建立一個很好的解決方案的時候..所以我們結束了一個包含數據的轉儲原始日誌文件就像我前面轉載)的例子;本來是很高興有一個現有的解決方案,但^^ – 2009-08-07 19:35:44
我不知道任何免費工具來解析和顯示PHP錯誤日誌。
我已經使用set_error_handler()和set_exception_handler()爲幾個項目編寫了測井功能。
我的處理程序類基本上做了_GET,_POST,_SERVER,_COOKIE,_SESSION等的print_r()和email/SMS me。大部分時間都能正常工作。我喜歡獲取快速錯誤通知。 (所以我可以快速修復它)。
您已經突出顯示了PHP社區工具中的缺陷。有人需要啓動一個項目,記錄錯誤並用一個漂亮的用戶界面來解析/顯示日誌。嗯...
- 1. 包裝VHDL包含錯誤
- 2. 安裝包錯誤
- 3. 包裝類錯誤
- 4. PHP安裝錯誤
- 5. PHP包含錯誤
- 6. 錯誤安裝A R包
- 7. 包裝inputenc錯誤:RStudio
- 8. 錯誤建築包裝
- 9. Facebook.Client包安裝錯誤
- 10. NuGet安裝FarseerPhysics.Portable包錯誤
- 11. 安裝包plyr的錯誤
- 12. Android包裝錯誤 - ArrayIndexOutOfBoundsException
- 13. 錯誤而MSI安裝包
- 14. 軟件包安裝錯誤
- 15. 錯誤安裝[R包「AppliedPredictiveModeling」
- 16. 安裝包錯誤(cl.exe時)
- 17. Python錯誤安裝包
- 18. BSTS包安裝錯誤
- 19. 的Android包裝錯誤
- 20. MVC4包安裝錯誤
- 21. 安裝PHP SDK Couchbase錯誤
- 22. PHP包括路徑錯誤
- 23. PHP包含路徑錯誤();
- 24. YouTube PHP包裝
- 25. 400對Apache/PHP AddHandler包裝器的錯誤請求
- 26. 500內部服務器錯誤在Apache/PHP的AddHandler包裝
- 27. 使用php://內存包裝會導致錯誤
- 28. 從(PHP)流包裝器錯誤消息中移除密碼?
- 29. 在Linux(Amazone ami)中安裝php-fpm無包可用錯誤
- 30. NuGet - JsonValue 0.5.0安裝包錯誤
我很想知道,如果這樣的事情存在的......雖然我自己也有點失望,因爲我已經花了很多時間開發自己的... – Josh 2009-08-07 17:54:24