What do I need to do to resolve this issue preventing me from proceeding with debug on VSCode 1.51.0 using xdebug extension on php, along with PHP Debug Extension v 1.13.0 on VS Code by Felix Becker?
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}"
}
]
}
Error in Console for Visual Studio - Run as Administrator
<- 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 Configuration Settings 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>
I solved the problem and got my application to stop at the specified breakpoint in my application.
After noting the suggestions in the first comment from the original question, I changed my XDebug broadcast port to 9000 in php.ini and set and set my launch configuration json file to listen to 9000 in my project directory, and set my php.ini xdebug.remote_port = "9000"
, and xdebug.remote_mode = "req"
. Then set my listen port to 80 in httpd.conf and all virtual host ports to 80 in httpd-vhosts.conf.
After launching my browser, I started up the debugger by going to VS Code, clicking and clicking on (Run, then Debug (or pressing F5 on the keyboard), the IDE stopped at the breakpoint set originally (which was done by clicking to the left of the source code line number and observing a bright red circle or dot appearing as a breakpoint.
A light grey but hollow circle, or a light red, or pink circle was not the correct breakpoint for my test to debug.
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