如何解决如何使用VSCode / PHP XDebug / PHP Debug Extension正确设置VSCode和Wampserver以在断点行上进行调试和暂停?
我需要做些什么来解决此问题,从而阻止我使用php上的xdebug扩展以及VS Code上的PHP Debug Extension v 1.13.0(由Felix Becker进行)对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","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>
解决方法
我解决了问题,并使我的应用程序停止在应用程序中的指定断点处。
在注意到原始问题的第一条评论中的建议之后,我将 php.ini 中的XDebug 广播端口更改为 9000 ,并将我的启动配置json 文件设置并设置为项目目录中的监听 9000 ,并设置我的 php.ini > xdebug.remote_port = "9000"
和xdebug.remote_mode = "req"
。然后在 httpd.conf 中将我的监听端口设置为 80 ,将所有虚拟主机端口设置为 80 在 httpd-vhosts.conf 中。
启动浏览器后,我进入VS Code,单击并单击(运行,然后调试(或按 F5 ),IDE会停止在最初设置的断点处(这是通过单击源代码行号的左侧并观察显示为断点的红色圆圈或点来完成的)
浅灰色但空心的圆圈,浅红色或粉红色的圆圈不是测试调试的正确断点。
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 80 <------------- Changed to 80 instead of 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","type": "php","port": 9000,<----- Modified to default XDebug port 9000
"request": "launch","pathMappings": {
"c:/wamp64/www/portaldev/": "${workspaceFolder}"
}
}
]
}
httpd-vhosts.conf
# Virtual Hosts
<VirtualHost *:80> <------ Set to port 80
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
#
<VirtualHost *:80> <------ Set to port 80
ServerName portaldev
DocumentRoot "c:/wamp64/www/portaldev"
<Directory "c:/wamp64/www/portaldev/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
#
<VirtualHost *:80> <------ Set to port 80
ServerName portallive
DocumentRoot "c:/wamp64/www/liveportal"
<Directory "c:/wamp64/www/liveportal/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
php.ini
; XDEBUG Extension
[xdebug]
zend_extension="c:/wamp64/bin/php/php7.3.12/ext/php_xdebug-2.9.8-7.3-vc15-x86_64.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_mode = "req" <------ Added to make the setup work
xdebug.remote_port = "9000" <------ Set to 9000
xdebug.remote_log = "c:/wamp64/tmp/log"
xdebug.show_local_vars=0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。