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

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



Установка PHP Debug


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


image

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


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


    <?php
        phpinfo();

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


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

Настройка Xdebug


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


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


    [XDebug]
zend_extension = C:\xampp\php\ext\php_xdebug-2.4.1-5.6-vc11.dll
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.2
xdebug.remote_port=9000
xdebug.remote_autostart=on
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\xampp\tmp"
xdebug.remote_log ="C:\xampp\tmp\xdebug.log"

Как вы уже, возможно догадались, в данном примере на локальной машине установлен 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).


image

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


    {
    "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 Debug на этом окончена.


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


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


image

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


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

Поделиться публикацией

Комментарии 10

    0
    с++ отладчик также можно прикрутить?
      +1
      Последний раз на c++ писал в институте. Возможно, ответ здесь
        0
        Спасибо огромное! Жаль плюсануть не могу :(
      0

      Последний раз, когда я смотрел уровень поддержки пыха в VS — там было в районе php 5.5 — 5.6 (примерно пол года-год назад).


      При этом:


      • Без автокомплита композера.
      • Без поддержки blade (и вроде бы twig) и других шаблонизаторов.
      • Без вменяемого статического анализа, только синтаксические ошибки.
      • Без автокомплита из phar.
      • Про пых версии 7.0 и 7.1 даже и мечтать не стоило.

      Скажите пожалуйста, есть вообще смысл рассматривать VS как инструмент для разработки на этом языке? Что-то изменилось за прошедшее время? (У меня Mint основная ОС, так что проверить самому руками довольно проблематично, извините).


      Т.к. если нет — разницы между VS и Sublime никакой (про продукты JetBrains можно вообще не говорить), кроме того, что VS раз в 10 медленнее.

        0
        Работаю для frontend. Пока функционала достаточно. Но сейчас заинтересовался — покопаю в этом направлении.
        Какой редактор/IDE используете для php?
          0

          Поглядел мельком работу в VS Code — нет ни поддержки ES7 (кусками), ни FlowType. В остальном — норм справился. Автокомплит почти что отсутствует.


          Пользуюсь PhpStorm. Для фронта достаточно будет WebStorm'а (он раза в два дешевле). Может я такой избалованный этой IDE, но уже не могу нормально работать в таких штуках как VS Code, ощущение что в обычном блокноте сижу. В полноценной VS ситуация получше ведь? Или так же?

          0
          Изменилось многое, в частности появился абсолютно новый инструмент — Visual Studio Code.
          Это не Visual Studio, это совершенно другое приложение (кстати, кросс-платформенное, так что вполне можете попробовать).
          Конечно, фломастеры на вкус все разные, но мне субъективно нравится больше чем Sublime, да и лицензию тут покупать не надо…
            0

            Проверил по-быстрому. Может плагины нужны какие? Потому что в поставке по-умолчанию — это полный провал.


            Заголовок спойлера



              0

              P.S. С удовольствием посмотрел бы как с этим справляется полноценная VS. Достаточно кода с самого нижнего скрина.


              код

              Могу до текущей стабильной версии откатить синтаксис, т.к. 7.1 ещё не релизнулся и пока что только в RC.


              <?php
              use A; 
              
              namespace Some;
              
              class A
              {
                  private const SOME = ['any' => 23]; 
              
                  /**
                   * @param int|null $value   
                   * @return int
                   */
                  public static function new(?int $value): int
                  {
                      return new static($value ?? static::SOME['any']); 
                  }
              
                  public function __construct(int $value): Some
                  {
                      some::any();
                  }
              
                  ololo() { 
              
                  }
              }
              
            0
            Только у меня при попытке дебага PHP в VS Code — в консоли видно только «spawn php ENOENT»? Во всех других IDE — работает нормально

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое