## 添加PHP至PATH环境变量
略过
![WX20181110-091621@2x.png](http://storage.liesauer.net/2018/11/2874912512.png)
## 下载配置XDebug
在`php.ini`中配置以下XDebug内容,这里我们只做了最简化的配置。
```
[XDebug]
# 根据具体的PHP版本以及系统选择相对应的XDebug扩展
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.port=9000
xdebug.remote_handler="dbgp"
```
![WX20181110-091801@2x.png](http://storage.liesauer.net/2018/11/1913145265.png)
执行`php -m | grep xdebug`检查XDebug是否已成功开启,个别系统可能不存在`grep`命令,直接执行`php -m`,有看到xdebug就表示成功开启XDebug
![WX20181110-092131@2x.png](http://storage.liesauer.net/2018/11/1488862226.png)
## Build System
在Sublime中选择菜单:Tools > Build System > New Build System,填入以下内容,保存至`Packages/User/PHP.sublime-build`
```json
{
"cmd": ["php", "$file"],
"file_regex": "php$",
"selector": "source.php"
}
```
## 运行PHP脚本
我们随便写个HelloWorld脚本,然后`Ctrl+B`直接运行该PHP脚本
![WX20181110-091509@2x.png](http://storage.liesauer.net/2018/11/1576624690.png)
## 安装Xdebug Client插件
![WX20181110-092207@2x.png](http://storage.liesauer.net/2018/11/4131320151.png)
## 使用Xdebug Client
在Sublime使用`Win+Shift+F9`启动Xdebug调试,然后我们`cd`到我们刚刚的那个HelloWorld脚本的位置,然后启动PHP内置的服务器来测试XDebug
```shell
cd path/to/helloworld
php -S 0.0.0.0:8080
```
![WX20181110-123544@2x.png](http://storage.liesauer.net/2018/11/2146485980.png)
然后在浏览器中输入当前的脚本url,注意要带上后面的`?XDEBUG_SESSION_START=sublime.xdebug`,至于为什么要带上,请了解XDebug的多种启动方式,可通过配置Xdebug Client来实现自动打开浏览器并且自动拼接
![WX20181110-123623@2x.png](http://storage.liesauer.net/2018/11/551899779.png)
然后我们切回到Sublime,可以看到已经成功命中了断点
![WX20181110-123633@2x.png](http://storage.liesauer.net/2018/11/2160359616.png)
但是下面的监视器却空空如也
![WX20181110-123641@2x.png](http://storage.liesauer.net/2018/11/2431175664.png)
这是因为Xdebug Client的默认配置导致生成的xml数据格式有错,导致无法和Xdebug通讯,所以我们要改下配置,点击菜单Tools > Xdebug > Settings - User,粘贴以下内容,`super_globals`一定要设为`false`(导致出错的原因)
```
{
"close_on_stop": true,
"super_globals": false
}
```
但是这样我们就无法监视到超级变量,所以我们要在代码里写些取巧的代码
```php
$SERVER = &$_SERVER;
$GLOBAL = &$GLOBALS;
$GET = &$_GET;
$POST = &$_POST;
```
右击 > Xdebug > Stop,然后在浏览器重新刷新下再切回Sublime,可以看到已经成功监视到超级变量
![WX20181110-123928@2x.png](http://storage.liesauer.net/2018/11/1959623328.png)
至此,我们已经能在Sublime中调试web程序了,右击 > Xdebug > Stop,把PHP内置服务器关了。
然后我们`Ctrl+B`,可以发现,脚本直接执行了,并没有启动XDebug
![WX20181110-124000@2x.png](http://storage.liesauer.net/2018/11/1474102529.png)
这是因为以CLI模式运行脚本需要不一样的方式启动XDebug,还记得我们刚开始创建的PHP Build System吗?我们只要在里面添加一个环境变量即可启动XDebug
```
{
"cmd": ["php", "$file"],
"file_regex": "php$",
"selector": "source.php",
"env": {
"XDEBUG_CONFIG": "idekey=sublime.xdebug"
}
}
```
![WX20181110-124308@2x.png](http://storage.liesauer.net/2018/11/409733138.png)
然后重新`Ctrl+B`,可以看到已经成功启动XDebug并命中断点
![WX20181110-124435@2x.png](http://storage.liesauer.net/2018/11/3463685026.png)
但是这样的话每次更新Xdebug的状态都会把我们的执行输出窗口给关了,我们可以点击左下角的图标,然后选择Build Results,这样就能重新弹出输出窗口,但是我们每执行一步代码又把窗口关了,又要自己重新打开
![WX20181110-124455@2x.png](http://storage.liesauer.net/2018/11/1978981998.png)
![WX20181110-124548@2x.png](http://storage.liesauer.net/2018/11/1363673991.png)
![WX20181110-124633@2x.png](http://storage.liesauer.net/2018/11/4154173080.png)
这里我对Xdebug Client进行了一些小修改,让其在更新完状态后自动重新弹出输出窗口,下面是效果图,附件在后面
![222.gif](http://storage.liesauer.net/2018/11/3408916066.gif)
## 附件
解压出来后直接把`Installed Packages`里面的`Xdebug Client.sublime-package`覆盖,然后重启Sublime,完事
[Xdebug Client.sublime-package.zip](http://storage.liesauer.net/2018/11/2339499466.zip)