1、下載Xdebug(先看php下的ext文件夾(C:\xampp\php\ext)下有沒有php_xdebug.dll文件,如果有的話,就不用下了。)
到目前為止,Xdebug的最新版本為2.7.0,可以前往Xdebug官方網站下載與自己的PHP版本匹配的Xdebug模塊文件。
由於筆者使用的是php5.6.37版本,因此下載的Xdebug模塊文件為php_xdebug-2.5.5-5.6-vc11.dll
Xdebug 2.5.5
- source (SHA256: 72108bf2bc514ee7198e10466a0fedcac3df9bbc5bd26ce2ec2dafab990bf1a4)
- Windows binaries:
PHP 5.5 VC11 (64 bit) (SHA256: 44e5f00131f94e7e057b421f7a987e3feb6cdd612a0b2fdd6ddbf7236d458860)
PHP 5.5 VC11 (32 bit) (SHA256: 9f5f7613de935b0f3b2793940c0c9e629eb879dec9d6b8dd2adc9e48c923aa32)
PHP 5.5 VC11 TS (64 bit) (SHA256: 44874c2360dd63591d75da6f08213c1d71f5578cabff7935cd015c364f47d2ab)
PHP 5.5 VC11 TS (32 bit) (SHA256: 1f8bb426d7a151b37bf3d42ff7163ff64f9a7a9537205c1d18d70e6d22750999)
PHP 5.6 VC11 (64 bit) (SHA256: 990e457e05e0f8678db21534931b0699d89d5f06d9ee42e26cde9f225c4e4b8b)
PHP 5.6 VC11 (32 bit) (SHA256: d1fdcb4e7ff0de6d1b70fdb37a09a78178aab60d52e1999cc6776e1447c7b723)
PHP 5.6 VC11 TS (64 bit) (SHA256: 8ac0b0e148e437abcf9acf2baf0b40b356cb1a248c53807a5b956e7f8c5acc68)
PHP 5.6 VC11 TS (32 bit) (SHA256: 5b24d00b725370024d308ec58fd00a189980cf7b2cde58e20e2e0f3b0f6a8825)
PHP 7.0 VC14 (64 bit) (SHA256: b16b98782ebeafccf98b9b3dc90f98e0462b2775904edec11c805ef9325c90c6)
PHP 7.0 VC14 (32 bit) (SHA256: 24afc6cc972dd2affff27c23b4284f8a7e39b485be9717f768cf0476c46ad37f)
PHP 7.0 VC14 TS (64 bit) (SHA256: 44028857e52bcdf18a3b18e647be58bccb955ab3c8a8a6644174abb9e3e82f87)
PHP 7.0 VC14 TS (32 bit) (SHA256: 276efa640a30042491fccaefe3ef76edcfb21d8766511373a1e7f855bb03b373)
PHP 7.1 VC14 (64 bit) (SHA256: 143498e9f0ef95d832137acc5788ab0c603b7b14323c2e57327c3ad699776705)
PHP 7.1 VC14 (32 bit) (SHA256: f3fbdb299f1340f5e8c0e09ed9890638c02f8cbe9986b280021e8f2be0c5c047)
PHP 7.1 VC14 TS (64 bit) (SHA256: f6603e4cbe0b9dc6323f0e9fc66f2ef3bcca558f009528749f245f6e50f1d4b4)
PHP 7.1 VC14 TS (32 bit) (SHA256: 370834f3666e7e690d876a58b9b10a416b2284681d72809c7a45a893dec19ab2)
2、安裝配置Xdebug
接着,我們將Xdebug模塊文件放入PHP安裝目錄/ext文件夾中,接着我們在PHP配置文件php.ini中追加如下配置內容:
[Xdebug]
;指定Xdebug擴展文件的絕對路徑
zend_extension="C:\xampp\php\ext/php_xdebug.dll"
;啟用性能檢測分析
xdebug.profiler_enable=on
;啟用代碼自動跟蹤
xdebug.auto_trace=on
;允許收集傳遞給函數的參數變量
xdebug.collect_params=on
;允許收集函數調用的返回值
xdebug.collect_return=on
;指定堆棧跟蹤文件的存放目錄
xdebug.trace_output_dir="D:/debug"
;指定性能分析文件的存放目錄
xdebug.profiler_output_dir="D:/debug"
xdebug.profiler_output_name = cachegrind.out.%t.%p
備注:在上述配置內容中,zend_extension用於指定Xdebug擴展模塊的文件路徑(由於Xdebug是基於Zend引擎的擴展,因此必須使用zend_extension配置指令,而不是extension。zend_extension指令的配置路徑必須是絕對路徑)。之后的6個配置語句是Xdebug的配置參數。
此時,我們重啟服務器,通過訪問含有phpinfo()函數的PHP文件,即可看到Xdebug模塊的相關信息。
到這里就算配置完了!
3、配置參數選項附錄
在上面的Xdebug配置中,我們只配置了6個常用的配置選項。當然,Xdebug還支持更多的配置參數,詳情見下表。
配置參數選項
參數值類型與默認值 | 參數選項描述 | |
---|---|---|
xdebug.auto_trace | boolean類型,默認值=0 | 是否在腳本運行之前自動調用相關追蹤函數。 |
xdebug.cli_color | integer類型,默認值=0 | 該參數自2.2版本開始引入。如果值=1,當處於CLI模式或連接虛擬控制台時,Xdebug將高亮顯示var_dumps()和堆棧輸出,;在Windows中,這需要安裝ANSICON工具。如果值=2,不管是否處於CLI模式或連接虛擬控制台,Xdebug都會高亮顯示var_dumps()或堆棧輸出;這種情況下,你可能會看到轉義后的代碼。 |
xdebug.collect_assignments | boolean類型,默認值=0 | 該參數自2.1版本開始引入。用於控制是否為函數跟蹤添加變量賦值功能。 |
xdebug.collect_includes | boolean類型,默認值=1 | 控制是否在跟蹤文件中寫入include()、include_once()、require()、require_once()等函數中用到的文件名。 |
xdebug.collect_params | integer類型,默認值=0 | 控制在調用函數時,是否收集傳遞給函數的參數信息。如果參數值過大,這可能會占用大量的內存;不過,在Xdebug 2中不會出現該問題,因為Xdebug 2將相關數據寫入磁盤中,而不是占用內存。 如果值=0,則不顯示任何信息。 |
xdebug.collect_return | boolean類型,默認值=0 | 控制是否在追蹤文件中寫入函數調用的返回值。 |
xdebug.collect_vars | boolean類型,默認值=0 | 控制是否收集指定作用域中的變量信息。由於需要反向工程PHP的操作碼數組,因此Xdebug的分析速度可能比較慢。 |
xdebug.coverage_enable | boolean類型,默認值=1 | 該參數自2.2版本開始引入。控制是否允許通過設置內部結構來啟用代碼覆蓋率功能。 |
xdebug.default_enable | boolean類型,默認值=1 | 當發生異常或錯誤時,是否默認顯示堆棧信息。 |
xdebug.dump.* | string類型,默認值=Empty | 這里的*可以是COOKIE, FILES, GET, POST, REQUEST, SERVER, SESSION中的任意一個。用於指定發生錯誤時是否顯示超全局變量數組中的索引變量信息。比如,你想要顯示請求的IP地址和請求方式,可以設置為 xdebug.dump.SERVER=REMOTE_ADD,REQUEST_METHOD 多個索引變量用英文逗號隔開,如果要輸出其中的所有變量,可以直接用*,例如: xdebug.dump.GET=* |
xdebug.dump_globals | boolean類型,默認值=1 | 控制是否顯示通過xdebug.dump.*定義的所有超全局變量的信息。 |
xdebug.dump_once | boolean類型,默認值=1 | 如果出現多個錯誤,控制超全局變量信息是在所有錯誤中顯示,還是只在第一個錯誤中顯示。 |
xdebug.dump_undefined | boolean類型,默認值=1 | 控制是否顯示超全局變量中未定義的值。 |
xdebug.extended_info | integer類型,默認值=1 | 是否強制進入PHP解析器的"extended_info"模式,這將允許Xdebug以遠程調試器對文件或行添加斷點。開啟此模式將拖慢腳本的允許速度,該參數只能在php.ini中設置。 |
xdebug.file_link_format | string類型,默認值=, | 自2.2版本開始引入。用於指定堆棧信息中用到的文件名稱的鏈接樣式,這允許IDE通過設置鏈接協議,直接點擊堆棧信息中的文件名稱,即可快速打開指定的文件。例如:ZendStudio://%f@%l(%f表示文件路徑,%f表示行號)。 |
xdebug.force_display_errors | integer類型,默認值=0 | 自2.3版本開始引入。是否強制顯示錯誤信息。 |
xdebug.force_error_reporting | integer類型,默認值=0 | 自2.3版本開始引入。是否強制顯示所有錯誤級別的信息。 |
xdebug.halt_level | integer類型,默認值=0 | 自2.3版本開始引入。指定出現那些錯誤級別的錯誤時,中止程序運行。例如:xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE(也僅支持上述4種錯誤級別)。 |
xdebug.idekey | string類型,默認值=*complex* | 指定傳遞給DBGp調試器處理程序的IDE Key。 |
xdebug.manual_url | string類型,默認值=http://www.php.net | 僅2.2.1以下版本可用,用於指定從函數堆棧和錯誤信息鏈接到的幫助手冊的基本URL。 |
xdebug.max_nesting_level | integer類型,默認值=100 | 指定遞歸的嵌套層級數。 |
xdebug.overload_var_dump | boolean類型,默認值=1 | 自2.2版本開始引入,當php.ini中的html_error設為1時,Xdebug是否默認使用自身的改進版本來重載var_dump()。 |
xdebug.profiler_append | integer類型,默認值=0 | 當多個請求映射到相同文件時,指定是覆蓋之前的調試信息文件還是追加內容到該文件中。 |
xdebug.profiler_enable | integer類型,默認值=0 | 指定是否啟用Xdebug的性能分析,並創建性能信息文件。 |
xdebug.profiler_output_dir | string類型,默認值=/tmp | 指定性能分析信息文件的輸出目錄 |
xdebug.profiler_output_name | string類型,默認值=cachegrind.out.%p | 指定性能分析信息文件的名稱 |
xdebug.remote_enable | boolean類型,默認值=0 | 是否開啟遠程調試 |
xdebug.remote_handler | string類型,默認值=dbgp | 指定遠程調試的處理協議 |
xdebug.remote_host | string類型,默認值=localhost | 指定遠程調試的主機名 |
xdebug.remote_log | string類型,默認值= | 指定遠程調試的日志文件名 |
xdebug.remote_mode | string類型,默認值=req | 可以設為req或jit,req表示腳本一開始運行就連接遠程客戶端,jit表示腳本出錯時才連接遠程客戶端。 |
xdebug.remote_port | integer類型,默認值=9000 | 指定遠程調試的端口號 |
xdebug.trace_options | integer類型,默認值=0 | 指定對於之后的請求,追蹤文件是追加內容還是覆蓋之前內容。 |
xdebug.trace_output_dir | string類型,默認值=/tmp | 指定追蹤文件的存放目錄 |
xdebug.trace_output_name | string類型,默認值=trace.%c | 指定追蹤文件的名稱 |
更多信息請參考官方文檔。