2011-03-10 24 views
0

我有PHP + MySQL代碼庫。如果MySQL停止並在登錄過程中失敗,如下所示:如何在php中避免strace

Fatal error: Uncaught exception 'FrameworkException' with message 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)' in /var/www/html/classes/class.connection.php:24 

Stack trace: #0 /var/www/html/login.php(15): Connection::getInstance('localhost', 'user', '__password', 'DB') #1 /var/www/html/login.php(73): isDataValid('[email protected]', 'test') #2 {main} thrown in /var/www/html/classes/class.connection.php on line 24 

如何避免此堆棧跟蹤?我想避免在出現錯誤時顯示這樣的用戶名和密碼

+6

捕捉到了異常,而不是讓它終止該腳本? – 2011-03-10 16:03:03

+2

你可以通過error_reporting(0)來禁用它。和/或淋浴器0 – n00b 2011-03-10 16:12:06

回答

4

在生產服務器上,您應該用php.ini的display_errors指令隱藏錯誤。錯誤仍會記錄但不會顯示給最終用戶。 關閉與error_reporting錯誤是不是一個好主意,如果你需要調試

不過你應該處理異常:

try { 
//Here the code which can throw an exception 
} catch(FrameworkException e) { 
echo 'an exception occured'; 
} 
+1

+1。除此之外,你還可以看看如何設置自己的處理程序來處理任何未捕獲的異常(例如爲最終用戶生成一個不錯的錯誤頁面,以防萬一你不捕捉所有內容):http:// php .NET /手動/ EN/function.set-異常handler.php – keithjgrant 2011-03-10 16:23:23

0

我建議使用@mysql_connect(或@ +無論您調用的任何函數)來抑制任何錯誤消息。 並手動吐出一些錯誤。既然你正在使用某種神祕的框架,你可以簡單地發現異常

但是,對於現場環境,您應該禁用任何類錯誤報告給用戶。

+4

用@隱藏錯誤消息不是一個好的解決方案。他應該處理這個錯誤。 (就像在你的牆上貼海報,因爲有一個你不想修復的漏洞) – grunk 2011-03-10 16:17:26