Ubuntu 20中PHP Xdebug调试时无故触发未定义变量错误求助
Xdebug调试时出现Undefined variable: raw_input_data问题排查
环境信息
- 系统:Ubuntu 20
- PHP版本:
PHP 7.4.33 (cli) (built: Feb 14 2023 18:31:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies with Xdebug v3.1.6, Copyright (c) 2002-2022, by Derick Rethans
- Xdebug配置:
zend_extension = xdebug xdebug.mode=debug xdebug.start_with_request=start xdebug.log_level = 0
问题现象
业务代码正常运行时raw_input_data变量无异常,另一台同版本PHP/Xdebug的机器运行源码也无问题,但调试过程中触发以下通知错误:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: raw_input_data
Filename: /debug-eval
Line Number: 1
Backtrace:
File: xdebug://debug-eval
Line: 1
Function: _error_handler
已尝试的无效操作
- 重装Xdebug
- 修改
xdebug.log_level为0
解决办法
- 检查IDE调试面板的求值语句:错误来自
xdebug://debug-eval,说明是IDE在调试时自动执行了引用raw_input_data的代码。打开IDE的调试监视列表、即时求值窗口或断点条件设置,删除所有包含该变量的表达式。 - 关闭IDE自动求值功能:部分IDE默认会在步进调试时自动对变量求值,可在调试设置中关闭该选项(例如PhpStorm:
Settings > Languages & Frameworks > PHP > Debug,取消勾选「Evaluate expressions on step」)。 - 补充Xdebug网络配置:添加以下配置到php.ini,确保Xdebug与IDE连接正常:
xdebug.client_host=127.0.0.1 xdebug.client_port=9003
- 清理IDE缓存:IDE缓存损坏可能导致调试逻辑异常,执行缓存清理后重启IDE(例如PhpStorm:
File > Invalidate Caches...,选择「Invalidate and Restart」)。 - 临时调整错误报告级别:在代码入口添加
error_reporting(E_ALL & ~E_NOTICE);,排除通知级错误对调试的干扰,确认是否为业务错误处理函数过于严格导致。
内容的提问来源于stack exchange,提问作者user3559233
相关产品推荐
相关产品推荐

