【发布时间】:2021-02-23 20:09:42
【问题描述】:
我需要做些什么来解决这个问题,阻止我使用 php 上的 xdebug 扩展以及 Felix Becker 在 VS Code 上的 PHP Debug Extension v 1.13.0 继续在 VSCode 1.51.0 上进行调试?
httpd.conf
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 81
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",
// Change back to php
"type": "php",
"request": "launch",
"hostname": "localhost",
"port": 81,
"log": true,
// Deprecated
// "localSourceRoot": "/var/www/html/mysite",
// "serverSourceRoot": "/var/www/html/mysite",
// server -> local
"stopOnEntry": true,
// "cwd": "${fileDirname}"
},
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://portaldev/",
"webRoot": "${workspaceFolder}"
}
]
}
Visual Studio 控制台出错 - 以管理员身份运行
<- outputEvent
OutputEvent {
seq: 0,
type: 'event',
event: 'output',
body: {
category: 'console',
output: 'Error: listen EACCES: permission denied 127.0.0.1:81\n' +
' at Server.setupListenHandle [as _listen2] (net.js:1289:21)\n' +
' at listenInCluster (net.js:1354:12)\n' +
' at GetAddrInfoReqWrap.doListen [as callback] (net.js:1493:7)\n' +
' at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:65:10) {\n' +
" code: 'EACCES',\n" +
" errno: 'EACCES',\n" +
" syscall: 'listen',\n" +
" address: '127.0.0.1',\n" +
' port: 81\n' +
'}\n'
}
}
Error: listen EACCES: permission denied 127.0.0.1:81
at Server.setupListenHandle [as _listen2] (net.js:1289:21)
at listenInCluster (net.js:1354:12)
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1493:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:65:10) {
code: 'EACCES',
errno: 'EACCES',
syscall: 'listen',
address: '127.0.0.1',
port: 81
}
<- launchResponse
Response {
seq: 0,
type: 'response',
request_seq: 2,
command: 'launch',
success: false,
message: 'listen EACCES: permission denied 127.0.0.1:81',
body: {
error: {
id: 0,
format: 'listen EACCES: permission denied 127.0.0.1:81',
showUser: true
}
}
}
Wampserver 配置设置 httpd-vhosts.conf
# Virtual Hosts
#
<VirtualHost *:81>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
#
<VirtualHost *:81>
ServerName portaldev
DocumentRoot "c:/wamp64/www/portaldev"
<Directory "c:/wamp64/www/portaldev/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
#
<VirtualHost *:81>
ServerName portallive
DocumentRoot "c:/wamp64/www/liveportal"
<Directory "c:/wamp64/www/liveportal/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
【问题讨论】:
-
请查看 Xdebug 文档,了解 Xdebug 端口是什么以及它是如何工作的。简而言之:1)它是 Xdebug 连接到调试客户端(代码中的 VSCode)而不是其他方式 2)Xdebug 端口必须与您的网站端口不同。
"port": 81,在这里是错误的——当你的 Apache 已经在使用它时,你不能告诉 VSCode 监听端口 81。它必须与 php.ini 中的端口相同 -
@LazyOne,感谢您的提示,我现在发布我的问题的完整答案
标签: php visual-studio-code xdebug wampserver