一、前言
这周学长给的任务需要调试 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