Xdebug 3.1.1调试仅显示$_COOKIE等4个超全局变量 其余变量未初始化
Xdebug自定义变量显示uninitialized问题修复方案
环境说明
- PHP 7.4.26
- Xdebug 3.1.1
- Apache/2.4.41 (Ubuntu)
- 调试客户端:PhpStorm
问题表现
调试过程中PHP脚本内的所有自定义变量都标记为uninitialized,无论脚本内容如何编写,调试时仅能获取到$_COOKIE、$_GET、$_REQUEST、$_SERVER这4个超全局变量。
原配置参考
zend_extension=xdebug.so xdebug.mode=debug xdebug.start_with_request=yes xdebug.discover_client_host = false xdebug.client_host = 127.0.0.1 xdebug.client_port = 9000 xdebug.log=/xdebug.log
修复步骤
步骤1:补充Xdebug配置
编辑php.ini中的xdebug配置段,新增以下参数,修改后完整配置如下:
zend_extension=xdebug.so xdebug.mode=debug xdebug.start_with_request=yes xdebug.discover_client_host = false xdebug.client_host = 127.0.0.1 xdebug.client_port = 9000 xdebug.log=/xdebug.log ; 新增配置开始 xdebug.idekey=PHPSTORM xdebug.var_display_max_children = 256 xdebug.var_display_max_data = 1024 xdebug.var_display_max_depth = 5 ; 新增配置结束
步骤2:调整Opcache优化配置
Opcache过高的优化级别会裁剪掉调试所需的变量信息,编辑opcache配置文件(通常位于php.ini的[opcache]段或者单独的opcache.ini文件),修改参数如下:
opcache.optimization_level = 0x1000 opcache.save_comments = 1
配置修改完成后执行命令重启Apache服务生效:systemctl restart apache2
步骤3:调整PhpStorm调试视图配置
- 打开顶部菜单
File > Settings > PHP > Debug,确认Debug端口配置和xdebug.client_port一致为9000 - 进入
File > Settings > PHP > Debug > Data Views - 取消勾选隐藏未初始化的变量选项,确保自定义变量展示开关处于开启状态
步骤4:验证修复效果
新建测试脚本test.php,在标记位置打断点:
<?php $custom_str = "test content"; $custom_arr = ["a", "b", "c"]; // 此处打断点 phpinfo();
启动调试后,命中断点时查看变量面板,确认可以正常展示$custom_str、$custom_arr两个自定义变量即可。
内容的提问来源于stack exchange,提问作者Adam Mason
相关产品推荐
相关产品推荐

