500 - php 500 無輸出 不報錯 請問如何快速定位錯誤代碼

WBOY
發布: 2016-08-04 09:20:20
原創
1389 人瀏覽過


php 500 無輸出 不報錯 請問如何快速定位錯誤代碼。
無輸出,無報錯,日誌正常。

我在重新表述下吧(一道中高級面試題):

線上程式碼,無輸出,無報錯,日誌正常,LNMP SERVER 500錯誤請問如何快速定位錯誤碼。

回覆內容:


php 500 無輸出 不報錯 請問如何快速定位錯誤代碼。
無輸出,無報錯,日誌正常。

我在重新表述下吧(一道中高級面試題):

線上程式碼,無輸出,無報錯,日誌正常,LNMP SERVER 500錯誤請問如何快速定位錯誤碼。

萬能碼:

<code>register_shutdown_function(function(){ var_dump(error_get_last()); });</code>
登入後複製

不過樓主還是要學會查看錯誤日誌。

原來是個面試題。 。 。 。

  1. 是否有日誌;

  2. 錯誤發生的現象:指定人發生還是所有請求都會,是以前就會還是第一次出現,伺服器尤其是資料庫伺服器負載程度,錯誤是否可以重現;

  3. 最近是否發布程式碼,是否改動了線上的基礎設施;

  4. 以前是否有類似事件發生;

  5. 500 是伺服器內部錯誤,可以關注下php-fpm是否沒有回應,php-fpm進程是否正常。其次看一下相關程式碼:是否依賴外部請求,是否有檔案名稱大小寫拼字錯誤問題,是否有效能低下的資料庫查詢,是否有邏輯處理不當的地方;

最後,修復問題後,完善日誌訊息,不要告訴我沒有日誌,這事必須有日誌。還有檢查測試過程是否完整是否需要完善,避免下次又團團轉。

安裝xdebug擴展,然後看你的錯誤日誌。
可以精確定位到出錯的地方,以及引用等訊息,強烈推薦。

根據我的經驗,Windows用一些整合化環境的話,像是記憶體溢位等錯誤,錯誤日誌是不會顯示錯誤訊息的。 (像Chrome瀏覽器會直接告訴你HTTP 500,而不是錯誤訊息或白螢幕)

查看伺服器錯誤日誌

開發的話 修改服務的配置,直接顯示錯誤啊

ini_set('display_errors','On');

看php錯誤日誌,立刻定位問題

<code>strace -p pid 
</code>
登入後複製

strace常用來追蹤進程執行時的系統呼叫和所接收的訊號。 在Linux世界,進程不能直接存取硬體設備,當進程需要存取硬體設備(例如讀取磁碟文件,接收網路資料等等)時,必須由用戶態模式切換至內核態模式,通 過系統呼叫存取硬體設備。 strace可以追蹤到一個行程產生的系統呼叫,包含參數,傳回值,執行消耗的時間。

<code>pstack
</code>
登入後複製

指令可顯示每個進程的堆疊追蹤。 pstack 指令必須由對應程序的屬主或 root 執行。可以使用 pstack 來決定進程掛起的位置。此命令允許使用的唯一選項是要檢查的進程的 PID。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板