2014-11-06 22 views
0

我不是PHP開發人員 - 對於noob問題感到抱歉 - 但我被給出的PHP代碼的行爲所困惑。在生產和UAT環境中一切正常,但在開發環境中處理集合有些問題。PHP未定義的索引 - 僅在開發環境中

在WordPress的項目這樣的代碼提供了一個錯誤:

$contact_display_2 = $post_meta['contact_display_2'][0]; 

的錯誤是: 注意:未定義指數:contact_number_2中/ WWW /可溼性粉劑內容/主題/自定義/標準的內容。 85線上的PHP

我很好理解$ post_meta數組中沒有這樣的變量,而isset()函數將有助於解決這個特定的錯誤。我的問題是:在環境配置中需要更改哪些內容,以便應用程序在開發環境中以與生產相同的方式工作?由於

+4

也許錯誤報告在生產和開發中被關閉了?在這種情況下,您的設置可能是正確的。 – lonesomeday 2014-11-06 16:41:34

+1

如上所述,生產中的錯誤消息可能是安全問題,因此被抑制。儘管他們很可能會填滿服務器上的一些日誌文件。所有的錯誤都應該在開發之前處理,然後才能投入生產,所以如果你改變$ contact_display_2 = $ post_meta ['contact_display_2'] [0];那麼準備寫很多'isset()' – Steve 2014-11-06 16:45:32

+0

;到$ contact_number_2 = $ post_meta ['contact_number_2'] [0];這將解決問題 – Peter 2014-11-06 16:45:56

回答

0

通常的解決辦法,當你發現自己有這樣寫不好是修改php.ini文件並關閉此參數

display_errors=Off 

這將停止顯示在瀏覽器中的錯誤一些代碼,但他們仍然可以被記錄到文件中,看到error_log = "some file in a folder"

更好的解決方案,如果你是在一個Apache虛擬主機上運行你的WP項目是從虛擬主機定義中關閉此參數,像這樣

php_flag display_errors Off 

這種方式更好,因爲它只爲一個寫得不好的網站關閉此參數,而不是您可能正在開發/維護的每個網站。這會阻止您像編寫您現在堅持使用的網站的開發人員一樣寫代碼。