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

來源:互聯網
上載者:User

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

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

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

回複內容:


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

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

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

萬能代碼:

register_shutdown_function(function(){ var_dump(error_get_last()); });

不過樓主還是要學會查看錯誤記錄檔。

原來是個面試題。。。。

  1. 是否有日誌;

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

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

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

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

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

安裝xdebug擴充,然後看你的錯誤記錄檔。
可以精確定位到出錯的地方,以及引用等資訊,強烈推薦。

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

查看伺服器錯誤日誌

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

ini_set('display_errors','On');

看php錯誤記錄檔,立馬定位問題

strace -p pid 

strace常用來跟蹤進程執行時的系統調用和所接收的訊號。 在Linux世界,進程不能直接存取硬體裝置,當進程需要訪問硬體裝置(比如讀取磁碟檔案,接收網路資料等等)時,必須由使用者態模式切換至核心態模式,通 過系統調用訪問硬體裝置。strace可以跟蹤到一個進程產生的系統調用,包括參數,傳回值,執行消耗的時間。

pstack

命令可顯示每個進程的棧跟蹤。pstack 命令必須由相應進程的屬主或 root 運行。可以使用 pstack 來確定進程掛起的位置。此命令允許使用的唯一選項是要檢查的進程的 PID。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.