为什么XDebug导致页面在Visual Studio Code PHP Debug扩展中停留加载?

时间:2019-01-25 16:59:22

标签: php visual-studio-code xdebug

我正在尝试在Visual Studio Code中调试php。这是安装PHP Debug扩展(以及依赖于PHP和XDebug)后的第一个项目。如果我将PHP可执行文件作为目标,则该页面将正确呈现,该文件位于命令提示符“ C:\ php> php -S 0.0.0.0:9000 c:\ users \ landerson \ documents \ vs_proj \ php_example \ index.php”中。但是,如果我开始使用配置“ Listen for XDebug”在Visual Studio中进行调试,则该页面将被卡住,直到停止调试过程为止。

我正在关注Microsoft的博客条目,其中解释了初始设置:https://blogs.msdn.microsoft.com/nicktrog/2016/02/11/configuring-visual-studio-code-for-php-development/。我怀疑可能没有完全理解说明“确保将Web服务器的根目录指向您的项目,并且每次您请求一个PHP文件”的说明可能会让我感到困惑。我尝试过执行命令提示符条目,也可以不执行。这似乎只会影响我停止调试过程之后发生的情况。我已经将我的phpinfo()结果输入到https://xdebug.org/wizard.php中,并按照说明进行操作。我在C:\ php中既没有index.php也没有php.ini,在c:\ users \ landerson \ documents \ vs_proj \ php_example中都没有

index.php

<?php
$myvar = "Hello ";
$myvar = $myvar . "PHP World!";

echo $myvar;

?>

php.ini的底部

zend_extension = C:\php\ext\php_xdebug-2.6.1-7.2-vc15-nts-x86_64.dll

[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1

C:\ Users \ landerson \ AppData \ Roaming \ Code \ User \ settings.json

{
    //"http.proxyStrictSSL": false,

    "php.validate.enable": true,
    "php.validate.executablePath": "C:\\php\\php.exe",
    "php.validate.run": "onType"
}

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

我希望至少在没有断点的情况下,页面才能加载,而添加断点将利用PHP Debug扩展。看来Visual Studio Code至少正在使XDebug开始在端口9000上进行侦听,但是由于任何原因,它都没有按预期进行。

1 个答案:

答案 0 :(得分:0)

因此,我通过观看以下视频来使它正常工作:Lyall van der Linde的https://www.youtube.com/watch?v=a14kN2u5nEk。除其他错误外,我不应该将服务和扩展都配置到同一端口。

据我目前所知,XDebug目前还没有针对PHP 32位版本7.3.1的发行版,因此我做了一个小怪癖,因此我最终安装了旧版本的XAMPP(7.2.14)。 Windows安装程序的旧版本可从https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/获得。我已经安装了最新版本的Visual Studio Code。我已经将PHP Debug扩展添加到Visual Studio Code中,并重新加载了该应用程序。

由于IIS使用端口80,因此我打开了XAMPP控制面板,并导航到主级别的Config,然后导航到Service and Port Settings,然后在apache选项卡下将Service Name Apahce2.4设置为Main Port 8080和SSL Port 443。我编辑了C:\ xampp \ apache \ conf \ httpd.conf并将“ Listen 80”替换为“ Listen 8080”。然后,我在XAMPP控制面板中启动了apache服务。

然后我在C:\ xampp \ htdocs \下添加了文件夹“ phptest”,并在VSCode中打开了该文件夹。添加了文件test.php并添加了以下行:

<?php

$a = 6;
$b = 3;
$c = 0;

$c = $a * $b;

echo $c;

我更新了VSCode用户设置,如下所示

{
    "php.validate.enable": true,
    "php.validate.executablePath": "C:\\xampp\\php\\php.exe",
    "php.validate.run": "onType"
}

我将http://localhost:8080/phptest/test.php的输出打开为“ 18”。

我打开了http://localhost:8080/dashboard/phpinfo.php,复制了该页面的文本,并将结果粘贴到了https://xdebug.org/wizard.php的输入表单中。这促使我为XDebug下载正确的dll(对我来说是php_xdebug-2.6.1-7.2-vc15.dll)。然后,我编辑了C:\ xampp \ php \ php.ini并附加到文件末尾:

[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
zend_extension = C:\xampp\php\ext\php_xdebug-2.6.1-7.2-vc15.dll

由于php.ini不断变化,我需要在XAMPP控制面板中停止并重新启动Apache服务。然后,我在Visual Studio Code的左侧导航下选择了“调试”,并添加了一个PHP配置“ Listen for XDebug”,并使用了默认的launch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

我在test.php中添加了一个断点,并开始在Visual Studio Code中进行调试。我在浏览器中导航到localhost:8080 / phptest / test.php,在Visual Studio Code中击中了断点,使我可以查看变量的值并逐步执行代码。