一直很苦惱地一個問題,有些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();
自己寫了一個日誌記錄的類,在需要調試的地方加日誌代碼,就可以了
線上的簡單調試輸出, 可以把資訊輸出到檔案吧。