sublime php 调试,在Sublime中使用XDebug调试PHP代码

## 添加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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值