一、前言
這周學長給的任務需要調試 php,之前寫的菜雞代碼出 bug 都是打印出來調試的,是時候規范一下了。另外 vscode 真好用!
二、Xdebug配置
php 集成環境和 vscode 裝好之后,在瀏覽器訪問 phpinfo 頁面,然后全選復制到 https://xdebug.org/wizard,點擊 Analyse my phpinfo() output 按鈕,將得到的結果逐條執行
php.ini 文件還要再填加兩項設置,這里我的設置和在網上查找的其他教程不同,可能是由於 xdebug 版本不同導致的,按照其他不成功設置的報錯查找官方文檔 https://xdebug.org/docs/upgrade_guide 得到的結果如下
xdebug.mode=debug xdebug.start_with_request=yes
重啟服務器,配置成功后 phpinfo 頁面出現 xdebug 信息
三、VSCode配置
安裝 php debug 插件,並在文件->首選項->設置->用戶->擴展->php->在 setting.json 中編輯
這里改成 php.exe 路徑,注意雙斜線
{ "php.validate.executablePath": "D:\\Major\\phpstudy_pro\\Extensions\\php\\php7.3.4nts\\php.exe" }
www 目錄下新建 phptest 文件夾,在文件夾下創建 debugtest.php 文件輸入如下代碼測試 debug 功能
<?php for ($i=1; $i<=5; $i++) { echo "The number is " . $i . "<br>"; } ?>
選擇 Launch currently open script,打上斷點,點擊運行->啟動調試,如果配置有問題,這里會顯示報錯信息,再根據報錯信息調整,這里調試沒問題之后選擇 Listen for XDebug 選項,打上斷點,瀏覽器刷新一下就可以看見 vscode 成功監聽到調試(launch.json 默認 9000 端口,根據報錯修改為 9003 端口)
四、其他細節
PHP Intelephense 插件方便跟進函數,但是插件要求 php 版本大於 7,且設置環境變量,安裝完畢后 setting.json 設置如下
{ "php.validate.executablePath": "D:\\Major\\phpstudy_pro\\Extensions\\php\\php7.3.4nts\\php.exe", "php.executablePath": "D:\\Major\\phpstudy_pro\\Extensions\\php\\php7.3.4nts\\php.exe" }
phpstudy 在瀏覽器不顯示目錄時,修改 vhosts.conf 配置文件,將 Options FollowSymLinks ExecCGI 注釋,添加 Options +Indexes +FollowSymLinks +ExecCGI 並重啟apache
五、第二種方式
因為某種原因又重新配置了一次,換了種方式好像更容易一點,記錄下來
phpstudy 這樣設置
設置后,php.ini 出現 Xdebug 的內容(配置文件中 xdebug.remote_enable=Off 需要改為 On,再添加一行 xdebug.remote_autostart=On)
[Xdebug] zend_extension=D:/Major/phpstudy_pro/Extensions/php/php7.3.4nts/ext/php_xdebug.dll xdebug.collect_params=1 xdebug.collect_return=1 xdebug.auto_trace=On xdebug.trace_output_dir=D:/Major/phpstudy_pro/Extensions/php_log/php7.3.4nts.xdebug.trace xdebug.profiler_enable=On xdebug.profiler_output_dir=D:/Major/phpstudy_pro/Extensions/php_log/php7.3.4nts.xdebug.profiler xdebug.remote_enable=On xdebug.remote_autostart=On xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_handler=dbgp
保存配置文件后重啟一下 apache,再去 vscode 中設置,填上 xdebug 的端口
第一次配置的時候,下載的是 xdebug3,因為有一些配置名稱已經更改,就會出現很多報錯,使用默認的 php_xdebug.dll 可以避免這些問題,然后下斷點,運行->啟動調試,瀏覽器訪問 php 文件,即可開始調試。
參考文章:
https://segmentfault.com/a/1190000019475551
https://www.cnblogs.com/neverth/p/11760932.html
https://www.cnblogs.com/-mrl/p/12214252.html
https://zhuanlan.zhihu.com/p/113171737