2014-05-22 78 views
4

我在linux機器上開發了一些php/mysql代碼,運行良好。在windows上運行wamp服務器的客戶機上,同樣的操作給出了一個mysql錯誤 - 哪個Php以表格格式整齊地顯示。該錯誤是在INSERT的mysql查詢中,屬於重複鍵。 (我知道我可以使用ON DUPLICATE KEY UPDATE,但這不是問題)。 問題是,代碼應該優雅地處理錯誤。PHP MySQL錯誤設置

確實我的Linux機器上,但在客戶的WAMP - 它會顯示錯誤信息HTML表格。我嘗試了trycatch圍繞函數調用,但是這也不能防止錯誤在瀏覽器中顯示(PHP文件應該爲ajax調用發出json數據,這就是爲什麼我不能讓這些錯誤顯示PHP)。

此外,在PHP文件,我有

ini_set('display_errors', 1); error_reporting(E_ALL);

靜靜的,因爲它是一個MySQL錯誤,它正確地不扔在Linux上的任何PHP錯誤,但不會在Windows上。

所以基本上,我想知道客戶端機器上的PHP設置(或別的什麼?)可能導致MySQL傳播/處理MySQL錯誤,以及如何關閉它。

感謝

+3

你可以張貼一些代碼? – xMoltenX

+1

你能告訴我們整個錯誤信息嗎? (試圖找出它來自哪裏) –

+0

您正在將'display_errors'設置爲'1',從而顯示錯誤? – NDM

回答

1

你可能要檢查你的php.ini,並看看這些值:

xdebug.auto_trace=1 
xdebug.trace_format=1 
mysql.trace_mode = On 
pdo_mysql.debug = On 

如果他們在那裏,禁用它們

+0

這確實是xdebug和其他擴展的問題。 – WorkWise

0

它能夠更好地讓使用error_reporting(0);在你的代碼開始時,當你把你的代碼放在實時服務器上時,最好隱藏不必要的錯誤和通知

+0

這是最好的,但它不會使網站的功能。 – xMoltenX

0

首先確保你的MySQL版本號是一樣的!

如果您使用的mysqli嘗試有以下幾點:

mysqli_report(MYSQLI_REPORT_OFF); 

如果你想用Linux軟件棧將其打開,嘗試這樣的事情:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
0

試試這個,而不是

ini_set('display_errors', 0); 

error_reporting(E_ERROR); OR error_reporting(0);