phpstorm + xdebug 远程调试PHP

这篇文章解决:

  • PhpStorm + xdebug单步调试PHP的设置
  • 远程服务器PHP源码调试
  • 微信公众号接口/小程序接口服务的调试

最近使用swoole开发,不支持windows,没办法本地调试,只能本地开发,PHPStorm自动部署到服务器,再使用远程服务器调试。其实使用起来跟本地调试是一样的,只有多了连接调试的确认的一步。

1、安装xdebug扩展

1
pecl install xdebug-beta

我安装了最新版的PHP,测试版的xdebug已支持。php-7.1以及以下的版本可安装正式版的xdebug。pecl install xdebug

2、配置xdebug

在php.ini中添加如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[xdebug]
zend_extension = xdebug.so
xdebug.remote_enable = On
; 单步调试的IDE所在主机
xdebug.remote_host = "192.168.1.167"
; IDE调试器监听端口
xdebug.remote_port = 9000
xdebug.remote_handler = "dbgp"
; 自动连接调试IDE
xdebug.remote_autostart = 1
; 如果启用,则忽略 xdebug.remote_host设置, 不管哪里请求,都是回调所请求的IP(即xdebug.remote_host动态设置为请求IP)
xdebug.remote_connect_back = 0
xdebug.auto_trace = 1
xdebug.collect_includes = 1
xdebug.collect_params = 1
xdebug.collect_return = 1
xdebug.default_enable = 1
xdebug.collect_assignments = 1
xdebug.collect_vars = 1
xdebug.show_local_vars = 1
xdebug.show_exception_trace = 0
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "/web/server/temp/xdebug"
xdebug.profiler_output_name = cachegrind.out.%R%u
xdebug.trace_format = 2

3、设置ide监听xdebug调试端口

打开phpstorm设置:
File 》 Settings 》 Languages && Frameworks 》 PHP 》debug

设置xdebug的调试端口跟php.ini中一致的调试端口。

4、启动监听调试

点击 “Start Listening”图标启动监听调试(图标右边挂个电话的图标)。
不想调试的时候停止监听即可。

5、调试

给要调试的脚本加断点,浏览服务器上要调试的页面(URL),即可再本地IDE中调试。

6、注意事项

  • 调试swoole应用的时候,IDE要先启动调试监听,然后再启动swoole应用服务,再浏览网址进行监听。因为cli模式下运行脚本时才启动调试,而php-fpm或mod_php每次浏览PHP页面的时候都会发起调试,因此启动调试监听后刷新页面即可调试。
  • 可删除PHPStorm “File 》 Settings 》 Languages && Frameworks 》 PHP 》 Servers”中的配置,下次调试时会自动创建调试服务器的配置信息。
  • 调试器可能不会在首行停下了,因此需要加断点后再调试。
  • 微信公众号接口不好调试吗?我们可以结合路由器的端口映射 + 动态域名解析,使用这个配置方式就可以调试了。