首页 > 解决方案 > VSCode 没有按照 php.ini 显示 DOCUMENT_ROOT

问题描述

我正在尝试调试 PHP 代码。我已经在 XAMPP 设置中安装了带有 PHP 的 VSCode。该代码在 Firefox 浏览器中运行良好。

当我在 VS Code 的调试器中运行它时,它似乎没有读取$_SERVER['DOCUMENT_ROOT']并显示为空。此外,$_SERVER['REMOTE_ADDR']显示为未定义的数组键。

VS 代码中的错误消息:

发生异常。
警告:未定义的数组键“REMOTE_ADDR”

PHP代码:

<?php
session_start();
$a = "hello";
echo $_SERVER['REMOTE_ADDR'];
echo $_SERVER['DOCUMENT_ROOT'];
session_destroy();
?>

PHP.INI 中的 XDEBUG 设置

Enabled Features
(through 'xdebug.mode' setting)
Feature Enabled/Disabled    Docs
Development Aids    ✔ enabled   
Coverage    ✘ disabled  
GC Stats    ✘ disabled  
Profiler    ✘ disabled  
Step Debugger   ✔ enabled   
Tracing ✘ disabled

[xdebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable= 1
xdebug.remote_connect_back = 1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9003
xdebug.remote_handler=dbgp
;xdebug.idekey = "ls.xdebug"
xdebug.start_with_request=yes
xdebug.mode=debug,develop
xdebug.remote_mode = req
sdebug.mode=debug
;xdebug.profiler_enable=0

请说明为什么某些 php.ini 设置未在全局数组中显示为可用$_SERVER

标签: phpvisual-studio-codexdebug

解决方案


我无法解释为什么这些会是空的——我认为这不是 Xdebug 问题。也许您正在使用 CLI 版本的 PHP 启动脚本。如果是这种情况,则没有 REMOTE_ADDR(或者我怀疑 DOCUMENT_ROOT)。

我可以解释为什么这在 Firefox 中运行“正常”,而不是通过 VS Code 中的调试器。默认情况下,VS Code 插件会在“所有内容”上设置断点,如下图左下角所示:

在此处输入图像描述

“Everything”意味着 VS Code 在每个异常、警告和通知上都设置了一个断点,这就是 Xdebug 停在这里的原因。您可以取消勾选“Everything”,然后它不应再在 VS Code 中显示警告。


推荐阅读