0x01 XDebug介紹
- XDebug是一個開放源代碼的PHP程式除錯器,可以用來跟蹤,除錯和分析PHP的運行狀況,功能強大,對審計有很大的幫助
- XDebug其實是一個.dll檔案,通常放在PHP安裝目錄的ext/php_xdebug.dll,通過配置對應版本的php.ini檔案使用
- 當配置XDebug完成后,每次訪問一個頁面,都會在指定的目錄下生成一個檔案,檔案詳細的記錄了相關變數和函式的運行時間、源檔案等等,可通過此檔案,得知PHP的運行狀況、某個函式的效率高低等等
0x02 安裝配置Debug
- 安裝
- 如果在PHP的安裝目錄下沒有php_xdebug.dll檔案,需到官網下載與自己本機PHP版本對應的XDebug,下載完成之后,放在對應版本/ext/下
- 配置(修改組態檔后需重啟Apache服務才可生效)
- 修改對應的PHP版本配置(.ini)檔案,配置如下

- 引數解讀
- 1937:將分析器輸出寫入到的目錄中,請確保將運行PHP的用戶對該目錄具有寫權限
- 1938:當這個設定被設定為!= 0時,Xdebug在錯誤情況下生成的堆疊轉儲也會顯示最頂層范圍內的所有變數,注意,這可能會生成大量資訊,因此在默認情況下關閉
- 1939:日志的輸出檔案夾,請確保將運行PHP的用戶對該目錄具有寫權限
- 1940:XDebug的檔案位置
- 1941:在概要檔案輸出目錄中創建檔案
- 1942:當這個設定設定為1時,您可以通過使用XDEBUG_PROFILE GET/POST引數來觸發概要檔案的生成,或者設定一個名為XDEBUG_PROFILE的cookie,這將把分析器資料寫入定義的目錄,為了防止分析器為每個請求生成概要檔案,您需要設定xdebug,profiler_enable為0
- 1943:打開自動追蹤,自動追蹤一般情況下為打開,可以更方便的尋找函式
- 1944:當這個設定被設定為1時,Xdebug將在任何例外或錯誤被引發時顯示一個堆疊跟蹤,即使這個例外或錯誤被實際捕獲
- 1945:當這個設定被設定為1時,Xdebug將總是嘗試啟動一個遠程除錯會話并嘗試連接到一個客戶端
- 1946:這個開關控制Xdebug是否應該嘗試聯系一個除錯客戶端,這個客戶端在主機上監聽Xdebug設定的埠,如果無法建立連接,腳本將繼續,就像該設定為0一樣
- 1947:只能是“dbgp”來表示除錯器協議,DBGp協議是唯一受支持的協議
- 1948:遠程除錯客戶機的主機IP,這里固定填寫127.0.0.1
- 1949:遠程主機上Xdebug試圖連接到的埠
- 1950:連接IDE的Key,可自定義
- 其他引數 xdebug.trace_format=0:日志追蹤輸出目錄,0代表人可讀,1代表機器可讀,2代表html格式,用瀏覽器打開閱讀,一般使用0
- xdebug.trace_options=0:記錄添加到檔案中方式,0代表覆寫,1代表追加,一般選擇覆寫,因為隨著時間,檔案越來越大,不方便審計
- xdebug.collect_params=4:顯示內容詳細程度,這里選擇4,顯示所有變數內容和變數名
- xdebug.collect_return=1:顯示函式回傳值,0為不顯示
- xdebug.collect_vars=1:顯示當前作用于使用了哪些變數,顯示變數名
- xdebug.collect_assignments=1:添加一行顯示變數賦值
- 修改對應的PHP版本配置(.ini)檔案,配置如下
0x03 XDebug的解密功能
- XDbug還有一個很強大的功能,它可以自動跟隨函式和變數的‘腳步’,解密出加密過的內容
- 通過網頁訪問加密過的檔案,使XDebug生成日志記錄檔案,從而間接達到解密的目的
- 使用記事本打開日志記錄檔案即可獲取解密后的內容
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78421.html
標籤:PHP
