Xdebug не работает vscode

Visual Studio Code PHP отладка не работает

Я установил Кодекс VS и PHP отладчик.

Я использую xampp.

Я попытался запустить код (2) способами (прослушать и запустить).

Слушать просто сидит там, пока запускает шоу spawn php ENOENT в консоли отладки.

Это мой launch.json.

Что я делаю неправильно?

Решение

Сделано это только сейчас:

У нас есть ОС Windows с Microsoft Visual Code и мы установилиPHP Debugмодуль https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug#overview Шаги, чтобы заставить это работать, уже написаны здесь, но я напишу снова:

Установите XDebug. Интернет Мастер https://xdebug.org/wizard.php поможет вам, просто разместите здесь данные phpinfo (). Сохраните в phpinfo.php это:

затем откройте в браузере localhost/phpinfo.php скопируй все что видишь ( Ctrl + A, затем Ctrl + C, ) к волшебнику. Он показывает вам полученную информацию и шаги, чтобы сделать:

открыто показано в инструкции php.ini (php.ini всегда много — в папке apache есть один php.ini, в php есть php.ini и phpForApache.ini. Но phpinfo ясно показывает, какой из них действительно используется)

2.1. и настроить его с xdebug.remote_enable = 1 а также xdebug.remote_autostart = 1 . Мой рабочий пример:

Перезапустите веб-сервер Apache2.

По какой-то причине я сначала заставил xdebug работать на Netbeans для тестирования, и только потом я нашел вариант xdebug.remote_autostart = 1 в руководстве, что сделало это работает в VS Code также.

Если вы не уверены в установке XDebug, проверьте на странице phpinfo слова «with Xdebug» и проверьте logs/apache_errors.log для «не удалось загрузить php_xdebug» (неправильно загружен DDL). Затем проверьте с любой другой IDE.

С наилучшими пожеланиями!

Другие решения

Вы проверили, чтобы убедиться, что межсетевой экран разрешает входящие соединения через порт 9000? У меня была именно эта проблема на одной из моих машин для разработки. В то время как все остальные настройки были правильными, я не смог достичь контрольных точек. Как только я добавил исключение в брандмауэр, оно начало работать.

Так что, если это проблема с вашими настройками, у вас есть две возможности это исправить.

  1. Полностью выключите брандмауэр или хотя бы временно, пока вы работаете над проектом.
  2. Добавьте исключение в настройки брандмауэра:
    • Перейдите в панель управления Windows и введите «Брандмауэр».
    • Выберите «Входящие правила» в левой навигационной панели, затем нажмите «Новое правило».
    • Выберите «Порт», затем нажмите «Далее».
    • Убедитесь, что выбран параметр «Определенные локальные порты», и введите «9000» в качестве номера порта.
    • Выберите «Разрешить соединение», затем нажмите «Далее».
    • Отметьте «Домен», «Частный» и «Публичный», затем нажмите «Далее».
    • Введите описательное имя, например «Порт XDebug», затем нажмите «Готово».
    • Перезапустите Visual Studio Code, затем повторите попытку отладки.

Предполагая, что у вас есть часть веб-сервера настройки конфигурации правильно, это позволит вам отладить.

Источник

Отладка php в Visual Studio Code (Xdebug, Windows)

В некоторых случаях может возникнуть необходимость отладки приложений на php. Visual Studio code предоставляет такую возможность при условии установки дополнительного расширения PHP Debug (marketplace, github).

Установка PHP Debug

Для установки нажмите Ctrl+p и введите команду ext install php-debug . Нажмите на кнопку «включить», в итоге вы должны увидеть примерно следующее:

Установка и настройка Xdebug

PHP Debug использует для отладки Xdebug. Для настройки Xdebug пройдите по ссылке. Предполагается, что на локальной машине уже установлен и настроен сервер apache. Здесь и далее действия указаны для Windows. Можно создать файл, например, test.php содержащий:

Открыть его в браузере и скопировать содержимое страницы в диалоговое окно. Другой способ:

  • win+R ;
  • cmd + Enter ;
  • php -i > phpinfo.text ;
  • открыть любым удобным редактором phpinfo.txt и все его содержимое вставить в диалоговое окно.

Далее следуйте инструкциям по установке: скачайте .dll и не изменяя его имени скопируйте его в указанную папку, дополните файл php.ini указанной в руководстве строкой.

Кроме этого, добавьте нижеследующие строки. Итоговое добавление будет примерно таким:

Читайте также:  Teyes внешний микрофон не работает

Как вы уже, возможно догадались, в данном примере на локальной машине установлен XAMPP.

Обратите внимание на строку xdebug.remote_host=127.0.0.2 . По умолчанию Xdebug «слушает» порт 127.0.0.1. Укажите здесь, адрес отлаживаемого сайта.

Примечание: С версией Xdebug 2.5 и выше Visual Studio code не работает. Поэтому выбирайте соответствующий вашей версии php файл *.dll.

Настройка Visual Studio code

Вызовите панель отладки (1) и нажмите на иконку с маленькой шестеренкой (2).

В появившемся списке выберите PHP . Автоматически сформируется файл launch.json .

Настройка PHP Debug на этом окончена.

Отладка php в Visual Studio code

Откройте в браузере ваше приложение\сайт. Откройте папку с приложением в Visual Studio code. Установите в нужных файлах и строках точки остановки. Откройте панель отладки и выберите для запуска отладки команду Listen for Xdebug (1). Нажмите кнопку запуска (2).

Обновите страницу в браузере и наслаждайтесь.

Источник

visual studio code PHP debugging not working

I have installed VS Code and the PHP debugger.

I am using xampp.

I tried running the code (2) ways (listen and launch).

Listen just sits there while Launch shows spawn php ENOENT in the debug console.

This is my launch.json.

What am I doing wrong?

9 Answers 9

Made it just now:

We have OS Windows with Microsoft Visual Code and we have installed ‘PHP Debug‘ module https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug#overview Steps to make it working already wroten here, but I’ll write again:

Install XDebug. Online Wizard https://xdebug.org/wizard.php helps you, just post here phpinfo() data. Save in phpinfo.php this:

then open in browser localhost/phpinfo.php , copy everything you see ( Ctrl+A then Ctrl+C ) to wizard. It shows you obtained info and steps to do:

Open shown in instruction php.ini (there are always many php.ini — apache folder has one php.ini, php has php.ini and phpForApache.ini. But phpinfo makes it clear showing which one is really used)

2.1. and configure it with xdebug.remote_enable = 1 and xdebug.remote_autostart = 1 . My working example:

Restart Apache2 webserver.

For some reason I first got xdebug working on Netbeans for testing, and only then I found option xdebug.remote_autostart = 1 in manual that made it working in VS Code also.

If you are unsure about XDebug installation, check phpinfo page for «with Xdebug» words and check logs/apache_errors.log for «failed loading php_xdebug» (incorrect DDL downloaded). Then check with any other IDE.

For anyone looking answer today, for me helped changing in php.ini section [XDebug] to this:

I used the settings from post of @Eluny, but with some newer version of the XDebug the properties names changed. On documentation page you can find info about changes

Just done it now in 2021 using xdebug (v3.x), some steps were different, so I am going to cite more details:

Installing xdebug module on your PHP

Run a PHP page calling «phpinfo();» and copy the output content (yes, you can select all text and Ctrl + C ) and paste on https://xdebug.org/wizard

The website xdebug.org will answer to you the correct xdebug module version to download (Example: php_xdebug-3.0.4-7.4-vc15-x86_64.dll»), also it will tell you how to install it, which directory and the reference to include on PHP.ini.

Enable xdebug settings to debug mode and enabling the remote step debugger on PHP.ini as the following example that I have used

You may need to change these xdebug settings according your situation (for example using another client port), you can see the list of all possible parameters running «phpinfo()». This trick will help you in case you get some issue, also you must ensure «Step debugger is shown as enabled», it also offers links on the right columns related to each topic.

So, on the previous settings you can check the host and port if it’s as expected as you are going to use on your VS Code.

Setting up your Visual Studio Code

Using extensions tab, search for «PHP Debug» and install it, (worth to tell that the details on the extension page has also it’s own tutorial).

Читайте также:  The big the one не работает

On VS Code menu File->Preferences->Settings, I have added tag for my PHP executable path:

Finally on VS Code debug tab, you will be asked to create a new launch.json file, just click on it and select PHP. The important step here is the section «configurations» on the item «Listen for Xdebug«, ensure the port is as same as the port shown on your previous phpinfo() report on XDebug.

Ensure your VS Code Project folder is corret and start a new debug using «Lister for Xdebug».

In case of some error or nothing happens, focus on checking the XDebug settings shown on «phpinfo()», also the «launch.json» on «Listen for XDebug» section or check the webserver error.log for possible error details.

Add the following line in your lunch.json file :

Have you checked to make sure the firewall allows Inbound connections on Port 9000? I had this exact problem on one of my development machines. While all other settings were correct I wasn’t able to hit the break points. Once I added an exception in the firewall it started working.

So if this is what the issue is with your setting, you have two options to fix it.

  1. Turn OFF your firewall completely, or at least temporarily while you work on your project.
  2. Add an exception to your Firewall settings:
    • Go to your Windows Control Panel and type «Firewall».
    • Select «Inbound Rules» from the left navigation, then click on «New Rule».
    • Select «Port» then hit «Next».
    • Make sure the «Specific local ports» option is selected and type «9000» for the port number.
    • Select «Allow the connection» then hit «Next».
    • Check «Domain», «Private» and «Public» then hit «Next».
    • Enter a descriptive name like «XDebug Port», then hit «Finish».
    • Restart Visual Studio Code, then try debugging again.

Assuming that you have the Web Server portion of the configuration setup correctly this should allow you to debug.

Источник

Настройка отладки php-кода при помощи Xdebug

Классические методы отладки на PHP — использование функций error_log, print_r и var_dump. Их проблема в том, что они не помогают отслеживать сам процесс работы кода. Однако с этой задачей справляется Xdebug — один из самых популярных инструментов среди PHP-разработчиков, которые хотят работать, а не страдать.

В этой статье будет рассмотрена отладка PHP с помощью связки Xdebug и VSCode. Если вы пользуетесь PHPStorm, то проблем тоже не будет — настройка выполняется даже проще и быстрее.

Возможности Xdebug

Xdebug — это расширение для PHP, которое позволяет использовать удаленный отладчик в IDE через брейк-пойнты. С его помощью вы можете отслеживать значения переменных. Как итог — ошибки в коде обнаруживаются быстрее, чем при использовании error_log, print_r и var_dump.

Еще одна полезная функция — трассировка стека. Она выводит подробный путь, который привел приложение к ошибке. Он содержит параметры, переданные в функцию. Xdebug также можно использовать как профайлер для поиска узких мест кода. Если добавить внешние инструменты, то получится визуализировать графики производительности. Например, можно использовать WebGrind — набор PHP-скриптов для удобного вывода статистики прямо в браузере.

Кроме того, с помощью Xdebug вы можете проследить, какая часть кода выполняется в процессе запроса. Это дает информацию о том, как хорошо код покрыт тестами.

Подключение Xdebug

Для работы Xdebug PHP должен быть в режиме CGI. Посмотрим на примере хостинга Timeweb, как его включить.

Подключаемся к серверу через SSH. Можно использовать консоль в панели управления Timeweb.

Переходим в папку cd-bin сайта:

Создаем символическую ссылку командой:

Остаемся в директории cgi-bin и копируем файл php.ini:

Добавляем в файл .htaccess сайта две строки:

Теперь мы можем управлять параметрами PHP директивами в файле php.ini. Он находится в папке cgi-bin. Открываем его и вставляем в конце следующие строки:

Если указанный порт занят, укажите другой. Можно использовать стандартный для Xdebug — 9000. В качестве idekey я указал VSCODE. Если будете настраивать конфигурацию для PHPStorm, впишите его.

Читайте также:  Не работает ctrl при сочетании клавиш

Чтобы проверить, работает ли Xdebug, создадим в корне сайта файл Myfile.php со следующим содержимым:

Открываем файл в браузере и проверяем, что все параметры указаны верно.

Организация удаленного подключения

Чтобы выполнять PHP Debug на локальной машине, нужно настроить связь IDE и сервера через SSH-туннель.

На Linux все выполняется парой команд.

Приватный ключ сохраняется на локальной машине, а публичный добавляется на сервер. Подробнее об этом, а также о настройке SSH на Windows, вы можете узнать из этой статьи.

На Linux туннель создается командой:

На Windows туннель настраивается через утилиту PuTTY.

  1. На вкладке Session указываем имя сервера и номер порта 1024. Проверяем, чтобы был отмечен протокол SSH.
  2. Переходим в раздел Connection — Data. Указываем логин.
  3. Переходим в раздел Connection — SSH — Tunnels. Указываем параметры так, как указано на скриншоте. Номер порта пишем тот, который используется в конфигурации PHP на сервере.
  4. Возвращаемся в раздел Session и нажимаем на кнопку Open. Подтверждаем корректность ключей (только первый раз).

Сессия сохранится под тем именем, которое мы указали в разделе Session. В дальнейшем нужно будет просто запускать ее заново.

Настройка VSCode

Чтобы работать с Xdebug в VSCode, установим два расширения: Sync-Rsync и PHP Debug. Первое нужно для работы с удаленным сервером, второе — для отладки скриптов.

  1. Открываем в VSCode раздел Extensions (можно использовать сочетание клавиш Ctrl+Shift+X).
  2. Находим и устанавливаем расширение Sync-Rsync.
  3. Находим и устанавливаем расширение PHP Debug.

После установки расширений создаем на локальной машине пустую папку и открываем ее через VSCode: «Файл» — «Открыть папку».

Добавляем подпапку .vscode, создаем внутри нее файл settings.json и прописываем в нем настройки для Sync-Rsync.

Путь /home/user/.ssh/id_rsa — это место, где лежит файл с закрытой частью SSH-ключа.

После сохранения файла settings.json нажимаем в VSCode F1, выполняем команду Sync Remote to Local. В локальную папку, указанную в настройках, скопируются все файлы с сервера.

Затем нажимаем на иконку отладки и на шестеренку. В папке .vscode появится файл launch.json. В него тоже нужно внести изменения:

На этом настройка IDE завершена. Можно приступать к тестированию кода.

Debug кода

Мы настроили среду, теперь разберемся, как пользоваться Xdebug.

  1. Изменим содержимое файла Myfile.php, который мы создали при подключении отладчика. Добавим в него функцию, которую хотим проверит ь.
  2. Чтобы загрузить измененный файл на сервер, нажимаем на клавишу F1 и выполняем команду Sync-Rsync: Sync Local to Remote.
  3. Открываем файл в браузере и проверяем, что синхронизация работает.
  4. Расставляем в VSCode брейк-пойнты, которые нужны для отладки.

Переходим в режим «Отладка» и проверяем, что выделен пункт Listen for XDebug. Нажимаем на зеленый треугольник или на клавишу F5.

После перезагрузки сайта в браузере возвращаемся в VSCode. В отладчике должны отобразиться глобальные переменные и их значения на момент обработки кода в брейк-пойнте. Вы можете перемещаться по коду, отслеживая изменение переменных на каждом шаге.

Профилирование с визуализацией результатов

Чтобы использовать Xdebug profiler на полную мощность, установим WebGrind. Это набор скриптов, который выводит статистику в браузере. С его помощью можно посмотреть список вызванных функций, количество вызовов, общее затраченное время на вызов и выполнение.

  1. Скачиваем WebGrind с GitHub.
  2. Загружаем архив на сервер и распаковываем файлы в корне сайта.
  3. Создаем папку, в которой будут храниться логи.
  4. Добавляем в файл php.ini две директивы:

Затем нужно открыть файл config.php, который находится в распакованной папке webgrind-master. В нем отредактируем две строки:

После такой настройки можно выполнять на Xdebug профилирование. Открываем наш тестовый скрипт в браузере. Затем переходим по ссылке www.domain/webgrind-master. В выпадающем списке выбираем только что запущенный скрипт и нажимаем на кнопку Update.

Функции можно скрывать или раскрывать, чтобы посмотреть развернутую статистику. Инструмент также умеет отображать графы вызова функций — для этого используется режим Show Call Graph.

Вывод: когда использовать Xdebug?

Xdebug существенно упрощает отладку PHP-кода. Конечно, если ваш текущий инструментарий удовлетворяет все потребности в поиске багов, то устанавливать дополнительное расширение смысла нет. Но, как показывает практика, без Xdebug сложно провести правильное модульное тестирование или отладку через удаленные брейк-пойнты с возможностью пошаговой проверки кода.

Источник

Оцените статью