记录下搭建PHP的Debug环境

笔者已转VSCode,本文可能已失效

本机环境

环境如下

PHP:7.1

OS:Windows 10

IDE:Sublime Text 3

步骤

下载Xdebug

https://xdebug.org/download.php 下载最新版的XDebug文件。
下载之后改名为php_xdebug.dll(不改名也不影响)放到PHP7根目录下的ext子目录下。
如果不知道该下载哪个,可以到https://xdebug.org/wizard.php 粘贴phpinfo的内容自动分析

配置PHP

修改PHP7根目录下的php.ini文件,在最后添加如下代码

[xdebug]
zend_extension = C:\AppServ\php7\ext\php_xdebug-2.6.1-7.1-vc14-x86_64.dll
xdebug.remote_enable=true
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.collect_vars=1
xdebug.collect_assignments=1
xdebug.collect_includes=1
xdebug.trace_format=1
xdebug.auto_trace=1
;xdebug.trace_options=1
xdebug.profiler_enable = on
xdebug.profiler_enable_trigger = on
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "C:/AppServ/www/debugger/"
xdebug.trace_output_name=trace.%H%R%t
;xdebug.show_local_vars=1
xdebug.remote_handler = dbgp
xdebug.remote_host= localhost
xdebug.remote_port = 9999
xdebug.remote_log="C:/AppServ/www/debugger/xdebug.log"

需要指明的是xdebug的端口号改为9999,也没有指定idekey
最后需要检查xdebug安装是否成功,如果在phpinfo()页面中显示出如下XDebug内容,则表示配置XDebug安装成功。

Sublime Text 3安装Package Control插件

在Sublime Text 3中使用Ctrl+~调出控制台,在控制台中输入

import urllib.request,os,hashlib; 
h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88';
pf = 'Package Control.sublime-package';
ipp = sublime.installed_packages_path();
urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) );
by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read();
dh = hashlib.sha256(by).hexdigest();
print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

之后,按回车执行,下载安装Package Control.sublime-package(可能需翻墙),重启之后Sublime Text 3的Preferences菜单下会多出Package Control二级菜单。

Sublime Text 3安装XDebug插件

按Ctrl+Shift+P组合键,然后输入install,并点击Package Control:Install Package ,调出Package Control窗口,然后输入xdebug,选择下方的XDebug Client,安装XDebug插件(可能需翻墙)。成功安装后,Preferences菜单下的Package Settings二级菜单中会多出Xdebug三级菜单。

配置XDebug插件

由于Sublime Text 3不允许修改默认设置,仅允许我们修改用户设置,因此需要生成一份XDebug的用户设置后再修改。
打开Preferences菜单下的Package Settings二级菜单下Xdebug三级菜单中的“Settings - Default”,复制该窗口的所有内容;

打开Preferences菜单下的Package Settings二级菜单下Xdebug三级菜单中的“Settings - User”,粘贴上一步复制的所有内容;
修改第30行”port”配置为

"port": 9999,

改完之后保存用户设置,用户配置将会保存到Sublime Text 3安装目录下的Data\Packages\User\Xdebug.sublime-settings文件中。

调试PHP

启动web服务,在网站根目录新建个文件为

<?php
$a = 1;
$b = 2;
var_dump($_GET);
echo phpinfo();
?>

这样就可以调试了。

XDebug Client调试快捷键:

Ctrl+F8: 填加/删除断点;
Ctrl+Shift+F5: 运行到下一个断点;
Ctrl+Shift+F6: 单步;
Ctrl+Shift+F7: 步入;
Ctrl+Shift+F8: 步出 ;

其他

Sublime PHP Companion

SublimeCTagsPHP的接班者,提供PHP编码期间的素材使用。

AllAutocomplete

Sublime 默认仅提供基于当前文件的自动补全,装上AllAutocomplete后,会提供基于所有文件的自动补全功能。

sublime-phpcs

DocBlockr

Sublime Text Git

GitGutter

Bracket Highlighting

CodeIntel

SublimePrettyJson

ConvertToUTF8

支持UTF-8编码的插件,装上之后,Sublime Text就支持UTF-8编码了。

Emmet

Web开发者必要的插件

这个插件改进了侧边栏,增加了许多功能

FAQ

Q1:如何关闭XDebug Client的调试窗口?

A1:Ctrl+Shift+P,在调出的窗口输入xdebug,选择Xdebug: Stop Debugging(…),之后Ctrl+Shift+P,在调出的窗口输入xdebug,选择Xdebug: Restore Layout。