我正在尝试在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上进行侦听,但是由于任何原因,它都没有按预期进行。
答案 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中击中了断点,使我可以查看变量的值并逐步执行代码。