我正在開發一個使用PHP的Web應用程序,這個應用程序正在我的一些朋友的測試中。你推薦我用什麼方法來知道他們得到了什麼樣的警告,但是不用ini_set('display_errors', 1);
來顯示它們?每天通過電子郵件發送PHP警告或如何?
此外,該應用程序將運行在Intranet中,我將無法遠程訪問。
我正在考慮每天向我發送包含一些信息的電子郵件,但我不知道哪些是重要的事實要保存。你有我的文章/樣本嗎?你有更好的建議嗎?
我正在開發一個使用PHP的Web應用程序,這個應用程序正在我的一些朋友的測試中。你推薦我用什麼方法來知道他們得到了什麼樣的警告,但是不用ini_set('display_errors', 1);
來顯示它們?每天通過電子郵件發送PHP警告或如何?
此外,該應用程序將運行在Intranet中,我將無法遠程訪問。
我正在考慮每天向我發送包含一些信息的電子郵件,但我不知道哪些是重要的事實要保存。你有我的文章/樣本嗎?你有更好的建議嗎?
例如,你可以這樣做:
error_reporting(E_ALL | E_STRICT); //For PHP 6 E_STRICT become part of E_ALL
ini_set('display_errors', 'Off');
ini_set('log_errors', 'On');
ini_set('error_log', $_SERVER['DOCUMENT_ROOT'] . '/php.log');
您還可以編輯的php.ini或使用.htaccess做(如果在Apache)。
您可以使用PHP mail(),但像PHPMailer這樣的庫會加快速度(並且更容易使用)。
我認爲這是唯一的可能性。
如果你可以連接那裏你可以看到apache日誌。
但是不然。對不起。
編寫一個錯誤處理程序並使用set_error_handler來確保它被調用,而不是默認的。在那個處理程序中,你可以做任何你認爲最適合你的目的。
如果您想要做每日電子郵件,您可以將數據保存到數據庫或文件,並且每天一次運行cronjob以發送包含最新數據的電子郵件。我可能更願意保存到數據庫中的日誌記錄表中,然後在相關時通過某個界面查看。
雖然這並不會抓住所有東西 - 所有E_WARNING都會被捕獲,但並非所有其他類型都會被捕獲。例如,解析錯誤不能以這種方式捕獲,如果您也想要處理異常,則應該使用set_exception_handler。
我最好的建議是閱讀關於PHP的set_error_handler函數。它可以讓你確切地確定發生錯誤時會發生什麼 - 無論是通過電子郵件發送,記錄還是你想做的任何事情。
現在,有許多關於在PHP中記錄錯誤的精彩文章,而不是將它們顯示給最終用戶。一些隨機的例子,我發現了一個30秒的谷歌搜索: http://davidwalsh.name/custom-error-handling-php http://www.electrictoolbox.com/log-php-errors-log-errors-error-log/ http://www.w3schools.com/php/php_error.asp
有很多方法在PHP來處理錯誤。除了前面提到的,你可以依靠默認的PHP錯誤日誌(默認情況下,PHP使用Apache的錯誤日誌,即/ var/log/httpd/error_log)。但是,您可以修改您的php.ini,將消息發送到您喜歡的任何文件。您可以每天檢查該文件以查看發生了什麼錯誤。
您還可以設置一個CRONTAB腳本,每天在該文件中讀取一次並通過電子郵件發送給您,然後將其清除。
同樣,我建議set_error_handler作爲一個更靈活的選項。
有關錯誤處理的信息,請參閱PHP手冊:http://de2.php.net/manual/en/book.errorfunc.php – Gordon 2010-02-04 20:33:35