Я борюсь с этим сообщением об ошибке. Иногда я не могу бежать Xdebug на код Visual Studio после обновления или перезапуска редактора. Вот скриншот ошибки:
Кто-нибудь может мне с этим помочь?
После нескольких минут, чтобы выяснить, что происходит на моей машине, я понял, как решить мою проблему.
Поскольку Xdebug работает на основе порта 9000
и я вижу на Debug Console
(VSCode) есть сообщение listen EADDRINUSE :::9000
я думаю, что другой порт работает на порту 9000
поэтому я проверяю, какой процесс выполняется на нем с помощью этой команды
sudo netstat -nlp | grep :9000
Команда выше покажет вам, какой процесс работает на порте 9000
тогда я получу этот результат
tcp6 0 0 :::9000 :::* LISTEN 14856/hhvm
HHVM был принят порт xdebug по умолчанию, поэтому мне нужно отключить его или изменить номер порта.
Подсказки:
Вы также можете использовать lsof
просмотреть процесс на конкретном порту
lsof -t -i :9000
У меня была такая же проблема, когда я начал использовать VSCode. Ну, я потратил 3 часа, чтобы выяснить, в чем именно проблема, я просто посмотрел пошаговую отладку, например, какой порт используется и какие другие настройки.
Наконец-то мне повезло и я получил решения 🙂 Итак, я поделился со всеми. Вы можете проверить мои выводы и то, что вам нужно настроить, чтобы Xdebug работал с VSCode.
Установите Xdebug в VS Code для отладки вашего PHP-кода на лету. следуйте пошаговой инструкции для правильной настройки xdebug.
[Xdebug] zend_extension = «FULL-XDEBUG-DLL-FILE-PATH»
пример
; Zend_extension = «d: \ wamp64 \ Bin \ PHP \ php7.1.9 \ zend_ext \ php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll»
ИЛИ ЖЕ
; Zend_extension = «d: \ wamp64 \ Bin \ PHP \ php7.1.9 \ вн \ php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll»
xdebug.remote_enable=1
xdebug.remote_autostart = 1
xdebug.remote_port="9000"xdebug.profiler_enable=1
xdebug.remote_host="localhost"
xdebug.profiler_output_dir="<tmp path>";Example
;xdebug.profiler_output_dir="d:\wamp64\tmp"
Открыть phpinfo & найти xdebug, если найден, то вы успешно установили xdebug!
Если Wamp Restart, но localhost не открывается, попробуйте изменить PORT. Может использовать PORT любым другим
приложение уже.
Пример JSON — 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
}
]
}
"php.validate.run": "onType",
"php.validate.executablePath": "<Your-Full-PHP-Path>php.exe"
Откройте PHP Project Folder и попробуйте отладить код .. Если вы получаете следующую ошибку
Адаптер VS Code Debug неожиданно завершил работу
или же
Ошибка консоли кода VS -> прослушивание EADDRINUSE :: 900)
Это означает, что PORT 9000 в настоящее время использует другая программа. Возможно, у вас запущен PHPStorm Xdebug или любое другое приложение, использующее PORT 9000. Попробуйте закрыть программу PHPStorm или Other и попробуйте снова выполнить отладку.
По-прежнему получая сообщение об ошибке, затем попробуйте найти программу, использующую PORT 9000, и убить их. По-прежнему получая сообщение об ошибке, попробуйте изменить PORT в php.ini и launch.json и перезапустить wamp и VSCode.
Теперь вы можете увидеть, как XDEBUG работает в VSCode.
> #### Пример кода для тестирования
<?php
/*
|--------------------------------------------------------------------------
| PHP XDebug Code Example - VS Code
|--------------------------------------------------------------------------
|
| Information:
|
| VS Code :
| Version : 1.19.2
| Commit : 490ef761b76b3f3b3832eff7a588aac891e5fe80
| Date : 2018-01-10T15:55:03.538Z
| Shell : 1.7.9
| Renderer : 58.0.3029.110
| Node : 7.9.0
| Architecture : x64
|
| Windows : 10
|
| WAMP Server : 3.1.0
| PHP : 7.1.9
| APACHE : 2.4.27
| MySQL : 5.7.19
|
| PHP INI PATH : D:\wamp64\bin\apache\apache2.4.27\bin\php.ini
| [Xdebug]
| zend_extension = "d:\wamp64\bin\php\php7.1.9\zend_ext\php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll"| xdebug.remote_enable = 1
| xdebug.remote_autostart = 1
| xdebug.remote_port = "9000"| xdebug.profiler_enable = 1
| xdebug.remote_host = "localhost"| xdebug.profiler_output_dir = "d:\wamp64\tmp"|
*/// first loop
for ($i=0; $i < 10; $i++) {
echo $i;
}
echo PHP_EOL;
// second loop
for ($i = 0; $i < 20; $i++)
{
echo $i;
}
/* End of file php-test.php */
/* Location: /wamp64/www/test/php-test.php */
Спасибо 🙂