Меню

настройка phpstorm xdebug openserver

Разное → Настройка PhpStorm+Xdebug+OpenServer

Настроил Xdebug в PhpStorm? Напиши на хабр! (с) хаброкоммент

Настройка OpenServer

Настройка PhpStorm

Убеждаемся, что в SettingsLanguages & FrameworksPHPDebug для Xdebug прописан порт 9000 и включена опция Can accept external connections:

С помощью меню RunWeb Server Debug Validation проверяем настройку отладчика:

Настройка браузера

Для старта отладки из браузера я использую Chrome расширение Xdebug helper, для других браузеров должно быть что-то похожее.

Процесс отладки

В PhpStorm включаем прослушку порта отладчика:

В нужном месте ставим брикпойнт:

В браузере открываем сайт и стартуем отладочную сессию:

При первом старте отладчика, PhpStorm предложит принять входящее соединение, жмём Accept:

И попадаем в отладочный режим:

P.S: Если вам нужно запускать отладку простых php-скриптов прямо из PhpStorm, то нужно в SettingsLanguages & FrameworksPHP добавить список используемых версий PHP и выбрать текущую версию интерпретатора (опция Interpreter).

Написанное актуально для PhpStorm 2016.1 Похожие записи

источник

Форум

Пошаговая настройка Xdebug + OpenServer + PHPStorm

Пошаговая настройка Xdebug + OpenServer + PHPStorm

1. Подготовка
Xdebug уже встроен в OpenServer и качать нам его не понадобится

Если все же нужен другой релиз xdebug его можно скачать отсюда http://xdebug.org/download.php
и переместить в
e:\OpenServer\modules\php\PHP-5.4.17\ext\
не забыв прописать в php.ini путь к нему (zend_extension)

2. Редактируем php.ini (e:\OpenServer\userdata\config\PHP-5.4.17_php.ini)
Должны быть эти обязательные настройки Перезапускаем OpenServer
Смотрим чтобы была временная папка xdebug >
e:\OpenServer\userdata\temp\xdebug\

3. Добавляем в браузер закладки со страницы http://www.jetbrains.com/phpstorm/marklets/ после нажатия Generate (IDE key: PHPSTORM)

Код закладок имеет такой вид >

Start debugger Stop debugger Debug this page Start profiler Stop profiler Start tracer Stop tracer В гугл хроме после добавления закладок используем ctrl+shift+O для перемещения их в удобное место — отмечаем на шифте их и перетягиваем в начало списка закладок
Ctrl+Shift+B отображает / скрывает панель закладок сверху страницы

File > Settings > PHP >
PHP language level: > выбираем соответствующую версию пхп (5.4)
Interpreter > кликаем на .
PHP Home > корневой путь к пхп (E:\OpenServer\modules\php\PHP-5.4.17)
Debugger > Xdebug
Name > PHP (можно любое другое)

File > Settings > PHP > Servers >
Name: > домен создаваемого сайта
Host > домен создаваемого сайта (например: myblog.loc)
Port > 80

Желательно чтобы название сервера совпадало с хостом (так шторм по-умолчанию прописывает, если ранее не указали).
Указываем сами чтобы избежать вопроса о расположении файлов при запуске первой отладки.

5. Открываем нужную страницу в браузере которую будем отлаживать
Нажимаем с закладок Start debugger (у меня start Xdebug, кому как удобно название)

В phpstorm включаем Listen PHP Debug Connections (значок телефонной трубки)
В коде сайта определяем точку остановки > Ctrl + F8

ОБНОВЛЯЕМ страницу в браузере, тем самым увидели остановку сайта и перехват штормом всех данных, которые получили до точки прерывания

6. Профилирование в phpstorm
Нажимаем с нужной страницы сайта Start profiler, обновляем, переходим по страницам сайта для отслеживания их работы.
Этим мы записали лог выполнения скриптов страниц в файлы > e:\OpenServer\userdata\temp\xdebug\cachegrind.out.[путь_к_странице]
где каждой странице создается файл.
Если обновить или зайти по уже ранее открытой странице сайта, обновится содержимое лог-файла.
Когда прекратили сбор информации нажимаем с закладок Stop profiler

Нажимаем в шторме
Tools > Analyze Xdebug Profiler Snapshot > выбираем файл профилирования
(E:\OpenServer\userdata\temp\xdebug\cachegrind.out. )

Все файлы логов работы страниц будут храниться во временной папке . \userdata\temp\xdebug до очередного запуска OpenServer (то есть сотрутся если нажать перезапустить сервер или остановить, запустить)
Но после остановки сервера файлы профилирования все еще сохраняются!

Читайте также:  megajet 500 настройка рации

7. Не забываем чтобы была указана необходимая версия PHP в OpServ-e > Настройки — Модули.

Опенсервер последний (4.8.9)
ПХП 5.5.4

Простите но я вас не понял.
ПХПШторм установлен отдельно.
Что значит запущен не из закладок Опенсервера?
Автор описал настройки ПХП.ини в п.2 туториала.

Так же ПХПШторм утверждает что модуль Хдебаг не подключен:

Loaded extensions: bcmath, calendar, Core, ctype, date, dom, ereg, filter, ftp, hash, iconv, json, libxml, mcrypt, mhash, mysqlnd, odbc, pcre, PDO, Phar, Reflection, session, SimpleXML, SPL, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, zlib

Так и есть.
Добавил ПХПШторм в закладки и Хдебаг определился.
Спасибо!

Возможно ли настроить так что бы нормально запускалось с ярлыка?

Я расскажу как я пользуюсь дебагером в phpstorm в связке с Open Server, по моему так намного проще:
Моя конфигурация: Open Server 4.9.0, PhpStorm 6.0.3, Windows 7.
1. Открываем проект в шторме
2. Открываем файл проекта который необходимо продебажить
3. Ставим брейкпоинт в участке кода который будем дебажить

4. Нажимаем на «Start Listen PHP Debug Connections» (ищем в подменю «Run» или на панели toolbar, иконка в виде трубки)

5. Теперь переходим в браузер Firefox и устанавливаем расширение easy Xdebug
6. Открываем в Firefox страницу которую будем дебажить
7. Включаем панель дополнений если она еще не включена
8. Находим на панели дополнений иконки плагина easy Xdebug

9. Запускаем xdebug сессию нажатием на жучка

10. Нажимаем F5 на нашей странице
11. Если все прошло удачно в PhpStorm должно всплыть следующее окно

12. Нажимаем Accept и все готово, можно дебажить

источник

Отладка PHP-кода с помощью Xdebug в PHPStorm

Отладка программы – это процесс, в ходе которого обнаруживают и устраняют баги. Для этого нам нужно знать, например, значения переменных на каждом шаге выполнения программы, или смотреть выполнилось ли условие, или даже погружаться в работу рекурсивных функций.

Собственно, так как многим рекурсия показалась сложной, то я решил сделать урок по отладке кода на PHP. В этой статье мы рассмотрим настройку отладки с помощью PHP-расширения Xdebug, а производить отладку мы будем в уже известной нам IDE PHPStorm.

Настройка отладки PHP в OpenServer

Первым делом давайте включим расширение Xdebug в файле конфигурации PHP (php.ini). Для этого идём в меню OpenServer -> Дополнительно -> Конфигурация -> PHP.

Здесь нам нужно найти секцию [Xdebug]. Как правило, она находится в конце этого файла.
Здесь нам нужно раскомментировать (или просто добавить) строки:

После чего нужно сохранить файл (CTRL + S) и перезапустить веб-сервер.

На этом настройка веб-сервера для отладки завершена.

Настройка отладки в PHPStorm

Теперь нам нужно настроить отладку в PHPStorm. Первым делом идём в настройки:
File -> Settings

Здесь в левом меню выбираем:
Languages & Frameworks -> PHP -> Debug

Прокручиваем правую часть до секции Xdebug, и задаём следующие настройки:

  • Debug port: 9000
  • Force break at first line when no path mapping specified: выключено
  • Force break at first line when a script is outside the project: выключено

Сохраняем изменения, нажав на “OK”.

Теперь в верхней правой части программы жмём на такую выпадающую менюшку:

И жмём “Edit Configuration”.

В появившемся окне в левом верхнем углу жмём на плюсик и выбираем “PHP Remote Debug”.

Читайте также:  как изменить настройки hard life

И нажимаем справа от пункта “Servers” на три точки:

В появившемся окне снова жмём на плюсик, и у нас в списке появляется новый сервер. Давайте зададим для него следующие настройки:

  • Name: localhost
  • Host: localhost
  • Port: 80
  • Debugger: Xdebug

Сохраняем нажатием на “OK” и завершаем заполнять ранее открытую настройку. А именно:

  • Ide key (session id): PHPSTORM

И убеждаемся, что в “Servers” указан только что созданный нами “localhost”.

Сохраняем, нажав “OK”. На этом конфигурация PHPStorm для отладки PHP-приложений с помощью Xdebug завершена.

Настройка отладки в браузере Google Chrome

Дело осталось за малым – нужно только установить расширение для Chrome под названием Xdebug helper.

Заходим в Chrome и переходим по адресу: Xdebug helper

Напротив расширения Xdebug helper жмём кнопку “Установить”.

После того, как расширение установлено в верхнем правом углу Chrome появится значок жучка. Жмём по нему правой кнопкой мыши и нажимаем “Параметры”.

Здесь в пункте IDE key в выпадающем меню выбираем PhpStorm.

На этом предварительная настройка завершена.

Начинаем отлаживать

Итак, все настройки выполнены и дело осталось за малым – начать пользоваться отладчиком.

Давайте в нашем index.php запишем следующий код:

А затем слева от строки $x *= 2; кликнем по пространству между номером строки и самим кодом – появится красная точка.

Это брэйкпоинт (breakpoint), или, как её ещё называют – точка останова. К ней мы вернёмся чуть позже.

Теперь давайте включим отладчик – в правом верхнем углу PHPStorm, там где раньше была пустая выпадашка, а теперь выбран пункт “XDebug”, жмём на значок жучка.

Отладка на уровне PHPStorm запущена.

Теперь возвращаемся в Chrome, заходим на адрес нашего проекта (в моём случае http://myproject.loc/) и после того как зашли(. ) жмём на значок жучка (уже в Chrome) и выбираем пункт “Debug”.

После чего значок станет зелёным.

Теперь можно в Chrome обновить страницу, и увидеть, что она повисла в режиме загрузки.

А в окне PHPStorm увидеть следующее:

Наша программа остановила своё выполнение в месте брэйкпоинта.

Внизу программы (во вкладке Variables) мы можем видеть значения всех переменных в данный момент. Как видим, сейчас (до выполнения строки 5) $x равна 7.

Давайте нажмём кнопку “F8”. Она осуществляет выполнение кода на текущей строке и останавливается перед следующим действием.

Умножили $x на 2, и как видим, её значение стало равно 14. Вот так с помощью отладки мы можем отслеживать значения переменных в какой-то определенный момент работы программы.

Помимо этого, есть, разумеется, и другие сочетания клавиш, которые используются во время отладки.

Давайте прямо сейчас нажмём F9. Это приведет к тому, что программа продолжит выполнение до следующего брэйкпоинта (да, их можно наставить сколько угодно). Если их больше не встретится (как в нашем примере), то программа просто завершит свою работу.

Давайте поиграемся с кодом посложнее:

И установим два брэйкпоинта на строках 5 и 10.

После чего обновим нашу страничку в браузере и попадём в первый брэйкпоинт на строке 10:

Здесь мы видим значения переменных $x и $y внутри функции. Нажмём F9 и программа выполнится до того момента, пока не дойдёт до следующего брэйкпоинта.

Здесь мы уже видим, что внутри функции доступны переменные $x и $y. Но это уже другие переменные, не те, что были переданы в функцию getSumOfCos(). Вот мы и увидели локальную область видимости в действии.

Читайте также:  need for speed pro street настройка дрифт

Помимо этого, в левом нижнем углу есть окошечко “Frames”, это так назваемый “стек вызовов”. Здесь мы можем переключаться на места, откуда был вызван наш код ранее. Так мы можем переключиться в то место, где была вызвана функция getSum().

И можем посмотреть переменные, которые были доступны в той области видимости (уровнем выше).

Ещё в правом нижнем углу можно увидеть окошечко “Watches”. Это такое место, где можно задать переменные или даже выражения, значения для которых вы хотели бы видеть всегда под рукой. Добавляются они туда с помощью плюсика. В появившемся окошечке вводим выражение, которое мы бы хотели отслеживать. Пусть это будет $x/2.

Отлично, осталось рассмотреть ещё одну клавишу и вы готовы к бою – F7. Она позволяет зайти “внутрь” какой-либо конструкции.

Давайте закончим отладку нажатием F9. Поставим теперь только один брэйкпоинт на строке номер 15 и обновим страничку в браузере.

Если сейчас нажать F8, то программа закончит своё выполнение, и мы не попадём внутрь функций. Так происходит потому что во время отладки мы работаем на определённых уровнях вложенности, и если нам нужно будет попасть внутрь функции, то нужно будет нажать F7, находясь на строке 15. После этого мы окажемся на строке 10. Если сейчас нажать F8, попадём на строку 11. Ещё раз – на строку 12. Если мы сейчас, находясь на 12 строке нажмем F7, то попадём внутрь функции getSum() на строку 5. А если бы мы нажали F8, то мы просто поднялись бы на уровень выше, в то место, где была вызвана функция getSumOfCos().

В принципе, большего для отладки вам не потребуется (лично мне этого хватает).

Ну а сейчас пришла пора поотлаживать рекурсивные функции. Коль уж у вас возникли проблемы с прошлой домашкой – давайте их решать =)

Давайте возьмем и поковыряем код из предыдущей домашки:

Поставим брэйкпоинт на 3 строке и запустим программу.

Итак, в функцию попала переменная $x = 3. Нажимаем F8, и попадаем на строку 7, так как условие не выполнилось. Теперь нажмём F7 и снова попадём в начало нашей функции, но теперь $x = 2. И при этом стек вызовов увеличился ещё на одну строку, то есть мы вошли в ещё один уровень вложенности.

Жмём F8 и снова оказываемся на строке 7. Нажимаем F7 и снова попадаем в новый вызов функции, только уже $x = 1, а в стэке вызовов появился ещё один уровень.

Снова F8 и затем F7. И вот уже в функции $x = 0.
Жмём F8 и оказываемся на строке 4 (теперь условие выполнилось). На этой строке программа выведет 0.

Жмём F8 и попадаем на строку 5. Сейчас функция завершит свою работу и мы попадём на уровень выше, в то место, где она была вызвана. Итак, жмём F8.

Вуаля, мы вернулись на уровень выше, там, где переменная $x = 1.

И попали мы на следующую строку, после той в которой вызвали функцию numbers(1 — 1). И на этой строке мы вывели уже число 1. А дальше – жмите F8 и наблюдайте за ходом выполнения программы. Надеюсь теперь рекурсия для вас понятна =)

источник

Добавить комментарий

Adblock
detector