PHP生產環境的bug如何優雅地debug?

來源:互聯網
上載者:User
一直很苦惱地一個問題,有些bug只能在生產環境中重現,但是我又不能線上上放置類似 echo $test;之類地代碼來調試,不知道大家有沒有好地經驗可以分享。

回複內容:

一直很苦惱地一個問題,有些bug只能在生產環境中重現,但是我又不能線上上放置類似echo $test;之類地代碼來調試,不知道大家有沒有好地經驗可以分享。

使用 socketlog

生產環境熱調試沒什麼不對的,但熱調試過程中暴露代碼邏輯和調試資料可是大大的作死。千萬不能培養自己這個習慣。

正確的方法是使用monolog等日誌工具,記錄你希望跟蹤的資訊。你可以使用額外querystring等方法約束日誌記錄的行為。

當然也可以專門建立一個/test一類的測試路由,然後用許可權控制禁止訪客進入…不夠優雅就是了。

trigger_error(var_export($var,true));
然後去php錯誤記錄檔裡面去查

你設定一個DEBUG_COOKIE=true, 然後要調試的時候改一下你瀏覽器的cookie..
然後你把調試輸出放到記錄檔裡面,就能查看了. 而且不會影響外網的呈現.

類似於 飛俠 的答案,不過我使用的是

error_log(var_export($data, true));

也可以修改該函數的第二個參數,將你要列印的資訊寫到指定的檔案裡。

最佳答案:php-console

https://github.com/barbushin/php-console

我常用做法可以就下面這樣,當然裡面的條件可變

if ( 'debug' == $_GET['status'] ) {    echo $test;}

這樣是有點困難。樓上的是好辦法,還沒用過

像一樓說的使用socketLog,xdebug,xhprof都不錯的。

使用docker構建環境,使得本地開發調試擁有一個和伺服器相同的環境,調試時連使用生產環境資料庫的備份建立的測試資料庫

ChromePHP::log();

自己寫了一個日誌記錄的類,在需要調試的地方加日誌代碼,就可以了

線上的簡單調試輸出, 可以把資訊輸出到檔案吧。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.