PhpStorm + Xdebug 远程调试PHP

这篇文章解决:

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

有些应用需要部署到外网环境才能运行,我们使用 PhpStorm + Xdebug 在本地调试远程web服务器跑的代码。

1、安装xdebug扩展

1
pecl install xdebug

如果服务器部署的是php很新,安装xdebug不成功,可以试试 pecl install xdebug-beta

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调试器监听端口,mac下和php-fpm端口冲突,自行更改该端口
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设置:

1
2
3
4
5
// windows
File > Settings > Languages && Frameworks > PHP > Debug

# mac
PhpStorm > Preferences... > Languages && Frameworks > PHP > Debug

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

4、启动监听调试

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

5、调试

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

6、注意事项

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

You forgot to set the qrcode for Alipay. Please set it in _config.yml.
You forgot to set the qrcode for Wechat. Please set it in _config.yml.
You forgot to set the business and currency_code for Paypal. Please set it in _config.yml.
You forgot to set the url Patreon. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×