Visual studio code php debug настройка
Я не могу найти способ запустить или отладить php в коде Visual Studio. Кто-нибудь знает как?
Решение
Если вы хотите отладить PHP, я могу порекомендовать Xdebug .
Обновлено:
Теперь можно отлаживать код VS. Вам необходимо установить XDebug а также PHP-отладка расширение для VScode.
Другие решения
VSCode теперь может поддерживать отладку PHP-проектов через расширение marketplace vscode-PHP-отладка .
Это расширение использует XDebug в фоновом режиме и позволяет использовать точки останова, часы, трассировки стека и тому подобное:
Установка очень проста из VSCode: вызовите командную строку с F1, а затем введите ext install php-debug
По ссылке выполняются следующие шаги:
- Загрузите и установите код Visual Studio
- Настроить PHP-линтинг в пользовательских настройках
- Загрузите и установите расширение PHP Debug из Visual Studio Marketplace
- Настройте расширение PHP Debug для XDebug
Обратите внимание, что в связанной статье есть конкретные детали, в том числе значения PHP для вашей пользовательской конфигурации VS Code и так далее.
Стоит отметить, что вы должны открыть папку проекта в коде Visual Studio для работы отладчика. Я потерял несколько часов, чтобы все заработало, при этом в редакторе открывался только отдельный файл.
Это на самом деле возможно бежать PHP без xDebug и без установки каких-либо дополнительных расширений.
Если вы просто хотите, чтобы исполняемый файл PHP оценивал код PHP и отображал вывод в терминале (т.е. не в браузере), то вам просто нужно скопировать следующую конфигурацию в ваши пользовательские настройки:
Это создает глобальную конфигурацию запуска, которую вы можете использовать с любым файлом PHP. Обратите внимание runtimeExecutable вариант. Вам нужно будет обновить его, указав путь к исполняемому файлу PHP на вашем компьютере. После того, как вы скопируете конфигурацию выше, всякий раз, когда у вас открыт файл PHP, вы можете нажать клавишу F5, чтобы запустить код PHP и отобразить вывод в терминале vscode.
С другой стороны, если вы хотите запустить PHP путем доступа к веб-серверу через браузер, вам нужно будет настроить его, создав построить задачу . Чтобы создать задачу, вам нужно будет работать с папкой рабочего пространства. Как только у вас откроется папка рабочего пространства, перейдите к Tasks > Configure Tasks. затем нажмите ввод, а затем выберите опцию «Другие». В результате вы создадите файл tasks.json в папке вашего рабочего пространства.
Теперь скопируйте мою конфигурацию ниже в ваш файл tasks.json:
Теперь, если у вас открыт файл PHP из рабочей области, вы можете нажать Ctrl + Shift + B (⌘ + Shift + B в MacOS), и должны появиться две вышеупомянутые задачи. Выбрать Start Server запустить встроенный сервер PHP, затем Run In Browser для запуска открытого в данный момент файла из браузера (предполагается, что корень рабочей области также является корнем документа). Обратите внимание, что если у вас уже запущен веб-сервер, вы можете удалить Start Server Задача и обновить localhost:8080 часть, чтобы указать на любой URL, который вы используете.
Если вы используете Ubuntu 16.04 и php7, вы можете установить xdebug с помощью следующей команды:
Вы можете найти полный процесс настройки Вот .
И начать отладку в VS-коде с PHP-отладка расширение.
Для отладки php с помощью vscode вам понадобятся следующие вещи:
- vscode с установленным плагином php debuge (XDebug);
- PHP с XDebug.so/XDebug.dll загружен и настроен;
- веб-сервер, такой как apache / nginx или просто ничего (используйте встроенный сервер php)
Вы можете осторожно пройти через шаги 1 и 2, следуя официальному руководству vscode. Полностью рекомендуется использовать Мастер установки XDebug проверить вашу конфигурацию XDebug.
Если вы хотите отлаживать без автономного веб-сервера, встроенный PHP может быть выбор. Запустите встроенный сервер с помощью php -S localhost:port -t path/to/your/project Команда, установив dir вашего проекта в качестве корня документа. Вы можете обратиться к эта почта Больше подробностей.
Существует гораздо более простой способ запустить PHP, без необходимости настройки:
- Установите Расширение Code Runner
- Откройте файл кода PHP в текстовом редакторе
- использовать ярлык Ctrl+Alt+N
- или нажмите F1 а затем выберите / тип Run Code ,
- или щелкните правой кнопкой мыши текстовый редактор, а затем нажмите Run Code в контекстном меню редактора
- или нажмите Run Code кнопка в меню заголовка редактора
- или нажмите Run Code кнопка в контекстном меню проводника
Кроме того, вы можете выбрать часть кода PHP и запустить фрагмент кода. Очень удобно!
Так может выглядеть интерфейс редактора после установки расширений
Основные возможности
- отладчик кода
- встроенный терминал
- удобные инструменты для работы с Git
- подсветка синтаксиса для множества популярных языков и файловых форматов
- удобная навигация
- встроенный предпросмотр Markdown
- умное автодополнение
- встроенный пакетный менеджер
VS Code имеет большое количество расширений для разработчика. Для установки нового пакета зайдите во вкладку “Extensions”, введите название пакета в строке поиска, нажмите кнопку “Install”.
EditorConfig for VS Code
EditorConfig — это конфигурационный файл и набор расширений к большому количеству редакторов кода. Он подхватывает настройки из файла .editorconfig , который, как правило, размещается в корне проекта. Расширение автоматически настроит отступы и перевод строк единообразно для всех разработчиков, использующих его. PHP код чаще всего выполняется на *nix системах, поэтому необходимо использовать стандарт.
Ниже приводится пример файла .editorconfig , который используется в Laravel:
PHP Intelephense
В редакторе уже есть поддержка синтаксиса и подсказок стандартных функций языка. Но без специального дополнения редактор не будет подсказывать пользовательские функции из других частей проекта. Поэтому для поддержки автодополнения, анализа кода, перехода к месту, где создана функция/класс/переменная (с помощью шортката Alt+Click ), используется дополнение PHP Intelephense
Чтобы подсказки не дублировались необходимо отключить встроенную в редактор поддержку кода для PHP: Extensions -> Search @builtin php -> PHP Language Features -> Disable
PHP Debug
При разработке может возникнуть ситуация, когда простых функций отладки и логирования становится недостаточно. Тогда может помочь специальный инструмент — Дебаггер. Для PHP есть расширение xdebug, которое позволяет расставить точки останова и посмотреть окружение в предполагаемом месте ошибки, выполняя код поэтапно либо до следующей точки.
Чтобы воспользоваться PHP Debug, необходимо установить сам XDebug, без него расширение для редактора работать не будет. Установив расширение, необходимо добавить конфигурацию для PHP в разделе Debug . После выбора языка в корне проекта будет создан файл .vscode/launch.json с задачами для Дебаггера. Расширение создаст файл со стандартными параметрами.
Для того, чтобы XDebug общался с нашим дебаггером, необходимо добавить настройки в файл конфигурации php. Чтобы найти этот файл выполните в терминале команду php --ini или запустите веб-сервер с кодом phpinfo() .
В Linux PHP подгружает не только основной файл, но и файл из этой директории. Например, на Ubuntu путь к директории конфигурационных файлов для PHP может быть таким — /etc/php/7.3/cli/conf.d/ . В ней создаём файл с необходимыми правами (требуются root права):
Это настройки для локальной разработки, когда проект разрабатывается и запускается на одном компьютере, например на вашей рабочей машине
PHP Sniffer
В языках программирования есть понятие стиль кодирования. Но не все разработчики знают об этом. Программа, которая отвечает за проверку на соответствие стандартам, называется линтер. В PHP приняты стандарты под названием PSR. Нас интересуют стандарты PSR-1 и PSR-12. Именно эти два стандарта касаются кодирования и правил оформления.
В PHP в качестве линтера используется PHP_CodeSniffer. Для его работы необходимо установить глобально сам линтер composer global require "squizlabs/php_codesniffer=*" и расширение PHP Sniffer.
Проверьте, что линтер установился:
Выполнить проверку кода в терминале можно с помощью команды phpcs , явно указав стандарт, который мы хотим использовать, и путь для проверки:
Semicolon Insertion Shortcut
PHP требует разделять инструкции с помощью точки запятой. Расширение Semicolon Insertion Shortcut добавляет необходимый символ в конец строки с помощью шортката. Если при нажатии [Ctrl] + ; символ не вставляется, то необходимо проверить список горячих клавиш и при необходимости назначить комбинацию вручную: File -> Preferences -> Keyboard Shortcuts
Extra
Список расширений, которые могут быть использованы не только для PHP:
-
— в VS Code уже встроена поддержка Git. Но когда базовых возможностей становится недостаточно, на помощь может придти Gitlens. Например, одна из полезных фич — git blame на текущей строке.
-
— разноцветные отступы в коде. Подсвечивает некорректный отступ. Можно вместо радуги установить оттенки серого.
Settings Sync — плагин, позволяющий синхронизировать настройки редактора между разными компьютерами. В качестве облачного хранилища используется Github Gists. Все настройки можно скачать, указав нужный файл синхронизации.
Fira Code — моноширинный шрифт, в котором используются лигатуры (объединяет несколько символов в один) для общих комбинаций символов в программировании. Визуальная надстройка для более удобного чтения кода.
Я не могу найти способ запустить или отладить php в коде Visual Studio, кто-нибудь знает, как?
Насколько я читал сегодня, вы не можете отлаживать что-либо, кроме node.js, JavaScript и TypeScript, но они сказали, что хотят добавить новые языки, которые вы можете отлаживать. Редактор все еще находится в разработке. Тем не менее, я не думаю, что в будущем будет отладчик php, поскольку php является серверным, поэтому вы не можете отлаживать его только на своем клиенте.
Если вы хотите отлаживать php, я могу порекомендовать xDebug.
Обновлено:
Теперь можно выполнять отладку с помощью кода VS. Вам необходимо установить XDebug и php-debug для VScode.
XDebug изменил некоторые параметры конфигурации.
Поэтому вам следует вставить последнее в файл php.ini. Дополнительная информация: XDebug Changed Configuration Settings
Лучшим решением для меня было добавить привязку клавиш для запуска PHP-кода прямо в терминале.
Для этого вам просто нужно загрузить terminal-command-keys с торговой площадки расширений кода VS:
Затем зайдите в Файл> Настройки> Сочетания клавиш и щелкните следующий значок в правом верхнем углу:
Откроется файл keybindings.json
Добавьте следующие настройки
ключ - это ярлык для запуска вашего файла PHP (я использую ctrl + s), вы можете изменить его по своему желанию
когда запускать разные команды для разных типов файлов (я установил это только для файлов PHP) предложения vscode" when "
См. Полную документацию по настройкам здесь
Вот и все, надеюсь, поможет.
Для отладки php с помощью vscode вам понадобятся следующие вещи:
- vscode с установленным плагином отладки php (XDebug);
- php с загруженным и настроенным XDebug.so/XDebug.dll;
- веб-сервер, такой как apache / nginx или просто ничего (используйте встроенный сервер php)
Вы можете аккуратно пройти шаги 1 и 2, следуя официальному руководству vscode. Настоятельно рекомендуется использовать мастер установки XDebug, чтобы проверить конфигурацию XDebug.
Если вы хотите отлаживать без автономного веб-сервера, лучшим выбором может быть встроенный php. Запустите встроенный сервер с помощью команды php -S localhost:port -t path/to/your/project , установив каталог вашего проекта в качестве корня документа. Вы можете обратиться к этот пост для подробнее.
Если вы используете Ubuntu 16.04 и php7, вы можете установить xdebug с помощью следующей команды:
Вы можете найти полный процесс настройки здесь.
И начните отладку в VS-коде с помощью расширения php-debug.
Стоит отметить, что для работы отладчика необходимо открыть папку проекта в Visual Studio Code. Я потерял несколько часов, чтобы заставить его работать, в то время как в редакторе был открыт только отдельный файл.
Их уже достаточно, чтобы помочь полные ответы, но если вы хотите увидеть процесс, то
[нажмите здесь]
Короткие шаги
обновите файл php.ini следующими строками:
[XDebug] xdebug.remote_enable = 1 xdebug.remote_autostart = 1 zend_extension=path/to/xdebug
[готово]
- убедитесь, что вы перезапустили локальный сервер
Есть гораздо более простой способ запустить PHP, не требующий настройки:
- Установите расширение Code Runner
- Откройте файл кода PHP в текстовом редакторе.
- использовать ярлык Ctrl+Alt+N
- или нажмите F1 , а затем выберите / type Run Code ,
- или щелкните правой кнопкой мыши текстовый редактор и выберите Run Code в контекстном меню редактора
- или нажмите кнопку Run Code в меню заголовка редактора
- или нажмите кнопку Run Code в контекстном меню проводника файлов
Кроме того, вы можете выбрать часть кода PHP и запустить фрагмент кода. Очень удобно!
Если вы не хотите устанавливать xDebug или другие расширения и просто хотите запустить файл PHP без отладки, вы можете выполнить это с помощью задач сборки.
Использование задач сборки
Сначала откройте палитру команд ( Ctrl + Shift + P в Windows, ⌘ + Shift + P в Mac) и выберите «Задачи: открыть задачи пользователя». Теперь скопируйте мою конфигурацию ниже в свой файл tasks.json. Это создает задачи на уровне пользователя, которые можно использовать в любое время и в любом рабочем пространстве.
Если вы хотите запустить свой php-файл в терминале, откройте палитру команд и выберите «Задачи: Выполнить задачу», а затем «Запустить в терминале».
Если вы хотите запустить свой код на веб-сервере, который обслуживает ответ веб-браузеру, откройте палитру команд и выберите «Задачи: выполнить задачу», затем «Запустить сервер», чтобы запустить встроенный сервер PHP, затем «Запуск в браузере». ", чтобы запустить текущий открытый файл из вашего браузера.
Обратите внимание: если у вас уже есть запущенный веб-сервер, вы можете удалить задачу Start Server и обновить часть localhost:8080 , чтобы она указывала на любой URL-адрес, который вы используете.
Использование PHP Debug
Примечание. Этот раздел был в моем первоначальном ответе. Изначально я думал, что он работает без PHP Debug, но похоже, что PHP Debug действительно предоставляет тип php в конфигурации запуска. Нет причин использовать его вместо описанного выше метода задачи сборки. Я сохраню его здесь на случай, если он пригодится.
Скопируйте следующую конфигурацию в свои пользовательские настройки:
Это создает глобальную конфигурацию запуска, которую вы можете использовать в любом файле PHP. Обратите внимание на параметр runtimeExecutable . Вам нужно будет обновить это, указав путь к исполняемому файлу PHP на вашем компьютере. После того, как вы скопируете приведенную выше конфигурацию, всякий раз, когда у вас открыт файл PHP, вы можете нажать клавишу F5, чтобы запустить код PHP и отобразить результат в терминале vscode.
- Скачайте и установите Visual Studio Code
- Настроить линтинг PHP в пользовательских настройках
- Загрузите и установите расширение PHP Debug из Visual Studio Marketplace.
- Настройте расширение PHP Debug для XDebug
Обратите внимание, что в связанной статье есть конкретные подробности, включая значения PHP для вашей пользовательской конфигурации VS Code и так далее.
VSCode теперь может поддерживать отладку проектов PHP через расширение Marketplace vscode-php-debug.
Это расширение использует XDebug в фоновом режиме и позволяет использовать точки останова, часы, трассировку стека и тому подобное:
Установка проста из VSCode: вызовите командную строку с помощью F1 и затем введите ext install php-debug
Классические методы отладки на 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, впишите его.
Чтобы проверить, работает ли Xdebug, создадим в корне сайта файл Myfile.php со следующим содержимым:
Открываем файл в браузере и проверяем, что все параметры указаны верно.
Организация удаленного подключения
Чтобы выполнять PHP Debug на локальной машине, нужно настроить связь IDE и сервера через SSH-туннель.
На Linux все выполняется парой команд.
Приватный ключ сохраняется на локальной машине, а публичный добавляется на сервер. Подробнее об этом, а также о настройке SSH на Windows, вы можете узнать из этой статьи.
На Linux туннель создается командой:
На Windows туннель настраивается через утилиту PuTTY.
- На вкладке Session указываем имя сервера и номер порта 1024. Проверяем, чтобы был отмечен протокол SSH.
- Переходим в раздел Connection — Data. Указываем логин.
- Переходим в раздел Connection — SSH — Tunnels. Указываем параметры так, как указано на скриншоте. Номер порта пишем тот, который используется в конфигурации PHP на сервере.
- Возвращаемся в раздел Session и нажимаем на кнопку Open. Подтверждаем корректность ключей (только первый раз).
Сессия сохранится под тем именем, которое мы указали в разделе Session. В дальнейшем нужно будет просто запускать ее заново.
Настройка VSCode
Чтобы работать с Xdebug в VSCode, установим два расширения: Sync-Rsync и PHP Debug. Первое нужно для работы с удаленным сервером, второе — для отладки скриптов.
- Открываем в VSCode раздел Extensions (можно использовать сочетание клавиш Ctrl+Shift+X).
- Находим и устанавливаем расширение Sync-Rsync.
- Находим и устанавливаем расширение 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.
- Изменим содержимое файла Myfile.php, который мы создали при подключении отладчика. Добавим в него функцию, которую хотим проверит ь.
- Чтобы загрузить измененный файл на сервер, нажимаем на клавишу F1 и выполняем команду Sync-Rsync: Sync Local to Remote.
- Открываем файл в браузере и проверяем, что синхронизация работает.
- Расставляем в VSCode брейк-пойнты, которые нужны для отладки.
Переходим в режим «Отладка» и проверяем, что выделен пункт Listen for XDebug. Нажимаем на зеленый треугольник или на клавишу F5.
После перезагрузки сайта в браузере возвращаемся в VSCode. В отладчике должны отобразиться глобальные переменные и их значения на момент обработки кода в брейк-пойнте. Вы можете перемещаться по коду, отслеживая изменение переменных на каждом шаге.
Профилирование с визуализацией результатов
Чтобы использовать Xdebug profiler на полную мощность, установим WebGrind. Это набор скриптов, который выводит статистику в браузере. С его помощью можно посмотреть список вызванных функций, количество вызовов, общее затраченное время на вызов и выполнение.
- Скачиваем WebGrind с GitHub.
- Загружаем архив на сервер и распаковываем файлы в корне сайта.
- Создаем папку, в которой будут храниться логи.
- Добавляем в файл php.ini две директивы:
Затем нужно открыть файл config.php, который находится в распакованной папке webgrind-master. В нем отредактируем две строки:
Функции можно скрывать или раскрывать, чтобы посмотреть развернутую статистику. Инструмент также умеет отображать графы вызова функций — для этого используется режим Show Call Graph.
Вывод: когда использовать Xdebug?
Xdebug существенно упрощает отладку PHP-кода. Конечно, если ваш текущий инструментарий удовлетворяет все потребности в поиске багов, то устанавливать дополнительное расширение смысла нет. Но, как показывает практика, без Xdebug сложно провести правильное модульное тестирование или отладку через удаленные брейк-пойнты с возможностью пошаговой проверки кода.
Читайте также: