查看php扩展xdebug配置
phpinfo(); //各种php配置信息,里面有xdebug的各种配置参数详情
php --ini | grep xdebug #可以看见xdebug版本
php.ini配置
xdebug2
;重要!凯西xdebug的哪些特性,phpinfo()里可以查看到还有好几种类型
xdebug.mode=debug,trace,profile
xdebug.remote_enable = On
xdebug.remote_handler= "dbgp"
;启用性能检测分析
xdebug.profiler_enable = On
xdebug.profiler_enable_trigger = On
xdebug.profiler_output_name = profiler.out.%t.%p
;启用代码自动跟踪
xdebug.auto_trace = On
;指定性能分析文件的存放目录
xdebug.profiler_output_dir = "某盘:\xxx\php\xdebug"
;指定启用代码自动跟踪文件的存放目录
xdebug.trace_output_dir = "某盘:\xxx\php\xdebug"
xdebug.remote_log = "某盘:\xxx\php\xdebug\remote.log"
xdebug.show_local_vars = 0
;配置xdebug监听的端口 端口随意改 推荐大于9000 且该端口不需要映射到宿主机,xdebug自己默认暴露但不映射
xdebug.remote_port = 9001
xdebug.idekey = "phpstorm"
# docker推荐采用如下形式表示和phpstorm所在机器的ip(如果你的phpstorm装在宿主机那就是宿主机的ip)
xdebug.remote_host = host.docker.internal
xdebug3
xdebug3版本的参数都有所改变的
[xdebug]
zend_extension="<path to xdebug extension>"
;重要!
xdebug.mode=debug,trace,profile
xdebug.client_host=127.0.0.1
xdebug.client_port="<the port (9003 by default) to which Xdebug connects>"
phpstorm文档:https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html#updatingPhpIni
IDE配置
- 配置ide监听端口,php通过
php.ini
指定端口转发给IDE
- 配置需要断点的服务
- 验证xdebug情况
cli/服务端配置
# serverName是IDE Setting -> PHP -> SERVER -> 第一个server的name
export PHP_IDE_CONFIG="serverName=ceportal.local.xiaoe.com"
# 注册cookie,idekey是php_xdebug的配置
export XDEBUG_CONFIG="idekey=qqq"
export PATH=${PATJ}:/home/work/bash
export APP_ENV="local"
alias ll='ls -al'
xdebug原理
- phpstorm监听端口N
- 浏览器通过80端口走到nginx
- 服务端nginx转发给9000端口的php-fpm。
- php拿到
php.ini
配置的xdebug的client_host
和client_port
,并发送连接,从而达到xdebug的通信
小工具 tcpdump -i 网卡名 ‘port N’ 查看tcp连接