В некоторых случаях может возникнуть необходимость отладки приложений на 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
содержащий:
<?php
phpinfo();
Открыть его в браузере и скопировать содержимое страницы в диалоговое окно. Другой способ:
win+R
;cmd
+Enter
;php -i > phpinfo.text
;- открыть любым удобным редактором
phpinfo.txt
и все его содержимое вставить в диалоговое окно.
Далее следуйте инструкциям по установке: скачайте .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. Укажите здесь, адрес отлаживаемого сайта.
Настройка Visual Studio code
Вызовите панель отладки (1) и нажмите на иконку с маленькой шестеренкой (2).
В появившемся списке выберите 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).
Обновите страницу в браузере и наслаждайтесь.
Комментарии (9)
SerafimArts
22.09.2016 19:40Последний раз, когда я смотрел уровень поддержки пыха в VS — там было в районе php 5.5 — 5.6 (примерно пол года-год назад).
При этом:
- Без автокомплита композера.
- Без поддержки blade (и вроде бы twig) и других шаблонизаторов.
- Без вменяемого статического анализа, только синтаксические ошибки.
- Без автокомплита из phar.
- Про пых версии 7.0 и 7.1 даже и мечтать не стоило.
Скажите пожалуйста, есть вообще смысл рассматривать VS как инструмент для разработки на этом языке? Что-то изменилось за прошедшее время? (У меня Mint основная ОС, так что проверить самому руками довольно проблематично, извините).
Т.к. если нет — разницы между VS и Sublime никакой (про продукты JetBrains можно вообще не говорить), кроме того, что VS раз в 10 медленнее.
eustatos
22.09.2016 20:58Работаю для frontend. Пока функционала достаточно. Но сейчас заинтересовался — покопаю в этом направлении.
Какой редактор/IDE используете для php?SerafimArts
23.09.2016 00:16Поглядел мельком работу в VS Code — нет ни поддержки ES7 (кусками), ни FlowType. В остальном — норм справился. Автокомплит почти что отсутствует.
Пользуюсь PhpStorm. Для фронта достаточно будет WebStorm'а (он раза в два дешевле). Может я такой избалованный этой IDE, но уже не могу нормально работать в таких штуках как VS Code, ощущение что в обычном блокноте сижу. В полноценной VS ситуация получше ведь? Или так же?
alaudo
22.09.2016 21:45Изменилось многое, в частности появился абсолютно новый инструмент — Visual Studio Code.
Это не Visual Studio, это совершенно другое приложение (кстати, кросс-платформенное, так что вполне можете попробовать).
Конечно, фломастеры на вкус все разные, но мне субъективно нравится больше чем Sublime, да и лицензию тут покупать не надо…SerafimArts
23.09.2016 00:10Проверил по-быстрому. Может плагины нужны какие? Потому что в поставке по-умолчанию — это полный провал.
SerafimArts
23.09.2016 00:21P.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() { } }
fishca
с++ отладчик также можно прикрутить?
eustatos
Последний раз на c++ писал в институте. Возможно, ответ здесь
fishca
Спасибо огромное! Жаль плюсануть не могу :(