Windows下搭建PHP调试环境(phpstudy+VScode)
0x00 问题背景
近期在学习sqli-labs时想更清楚的看到变量拼接后的内容,之前也一直想搭建一个php 的调试环境,刚好最近在国光大佬的文章中发现了类似的内容,记录一下自己的学习过程。 |
0x01 配套环境
Win_10 操作系统,这里windows下环境的搭建都是相同的 phpstudy2016+ ,建议使用phpstudy2018或者最新版的phpstudy_pro,后者有着更好看的UI,前者则是更简洁的界面。 php5.6.9,5.3以上的任意版本都可以开启此扩展,具体由工作情况而定。 Xdebug 2.5.5,在5.3版本以上的php中可以直接在扩展中打开,比较简单。 VScode 1.66.2,或者phpstrom等IDE。 FireFox + Xdebug helper或PHP SERVER启动调试. |
0x02 php Xdebug简介
官方介绍:
Xdebug
是一款帮助php开发和调试的扩展。它提供了在IDE中单步调试的功能,也优化了了var_dump
的输出格式,为Notice、Warning、Error
和Exception
提供了调用栈信息,还可以结合PHPUnit
提供代码覆盖率信息等。
- 由此可以看到想要与
Xdebug
交互获得当前代码中的各种信息,一个好的IDE也是必不可少的。
Xdebug扩展启用
- 这里使用最新版本的
phpstudy
搭建xdebug
版本为2.5.5
。
以phpstudy_pro
和php5.6.9
为例,选择软件管理→php标签→设置。
在设置中选择扩展组件→XDebug调试组件。
这里的profiler
和trace
分别对应配置文件中下面两项的值。
xdebug.auto_trace=Off / on
xdebug.profiler_enable=Off / on
0x03 php.ini配置
在图形化的界面中已经可以更改部分php.ini的配置,包括xdebug.auto_trace、xdebug.profiler_enable和xdebug.remote_port的内容,但还有部分内容需要我们在ini中直接修改。 |
在基础使用中需要用到的配置参数为:
zend_extension=X:/phpStudy_64/phpstudy_pro/Extensions/php/php5.6.9nts/ext/php_xdebug.dll
//扩展安装路径,如果使用的是集成环境,这部分内容都应当已有
xdebug.collect_params=1
//控制function的参数显示选项,这里1表示只显示参数类型
xdebug.collect_return=1
//控制显示function的返回值,这里1表示显示返回值,0为不显示
xdebug.auto_trace=On
//控制Xdebug跟踪函数调用,跟踪信息以文件形式存储
xdebug.trace_output_dir=D:/phpStudy_64/phpstudy_pro/Extensions/php_log/php5.6.9nts.xdebug.trace
//控制trace文件输出的位置
xdebug.profiler_enable=On
//控制自动开启性能检测
xdebug.profiler_output_dir=D:/phpStudy_64/phpstudy_pro/Extensions/php_log/php5.6.9nts.xdebug.profiler
//控制profiler文件输出的位置
xdebug.remote_enable=On
//配置远程调试开启
xdebug.remote_host=localhost
//配置远程调试地址,这里为本地
xdebug.remote_port=9000
//配置远程调试端口
xdebug.remote_handler=dbgp
//表示协议为DBGp协议,一般默认不跟更改
xdebug.idekey = AFCC
//控制连接IDE的字符串
全部配置完毕后重新启动phpstudy
读取配置文件,打开phpinfo.php
。搜索xdebug
如图所示,表示服务端已经配置完毕。
0x04 vscode配置
VScode下载安装
VScode官网中选择对应系统的安装包类型,一路Next安装即可。
VScode调试配置
1. PHP Debug
在VScode的扩展中搜索并安装 PHP Debug
设置之前确定的IDEkey。
之后随意编写一个含有变量的php文件用来测试:
<?php
$a = $_GET['a'];
$b = $_GET['b'];
$a_b = $a + $b;
var_dump($a_b);
?>
2. launch.json
根据提示创建launch.json
文件,内容为:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9000 //端口与之前相同
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000 //端口与之前相同
}
]
}
3. PHP SERVER创建调试
为了便于调试开启与关闭,直接安装PHP SERVER插件。
分别配置
Browser默认打开的浏览器
php.ini和php.exe用于启动服务
点击Run and Debug,然后点击PHP server直接打开浏览器调试。
调试完毕后使用CTRL + SHIFT + P选择PHP Server: Stop server,停止对应的php server。
4.FireFox + Xdebug helper调试
在这里火狐和google浏览器都有对应的Xdebug helper,在扩展管理中下载并安装扩展。
安装完毕后只需配置IDEkey即可。
在VScode中点击Run and Debug,然后在浏览器访问页面,点击小图标开始调试。
调试完毕后选择Disable即可。