Страница 1 из 4

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

Добавлено: 01 окт 2013, 22:12
Redee
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)
Должны быть эти обязательные настройки
[Xdebug]
zend_extension="%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll"
xdebug.idekey = "PHPSTORM"
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir="%sprogdir%/userdata/temp/xdebug/"
xdebug.profiler_output_name = "cachegrind.out.%H%R"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_port = 9000
xdebug.trace_output_dir = "%sprogdir%/userdata/temp/xdebug/"
Перезапускаем OpenServer
Смотрим чтобы была временная папка xdebug >
e:\OpenServer\userdata\temp\xdebug\

-----

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

Изображение

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

Start debugger
javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_SESSION='+'PHPSTORM'+';path=/;';})()
Stop debugger
javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_SESSION='+''+';expires=Mon, 05 Jul 2000 00:00:00 GMT;path=/;';})()
Debug this page
javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_SESSION='+'PHPSTORM'+';path=/;';document.location.reload();document.cookie='XDEBUG_SESSION='+''+';expires=Mon, 05 Jul 2000 00:00:00 GMT;path=/;';})()
Start profiler
javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_PROFILE='+'1'+';path=/;';})()
Stop profiler
javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_PROFILE='+''+';expires=Mon, 05 Jul 2000 00:00:00 GMT;path=/;';})()
Start tracer
javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_TRACE='+'1'+';path=/;';})()
Stop tracer
javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_TRACE='+''+';expires=Mon, 05 Jul 2000 00:00:00 GMT;path=/;';})()
В гугл хроме после добавления закладок используем ctrl+shift+O для перемещения их в удобное место - отмечаем на шифте их и перетягиваем в начало списка закладок
Ctrl+Shift+B отображает / скрывает панель закладок сверху страницы

-----

4. Настройка PHPStorm

Изображение

Изображение

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 (то есть сотрутся если нажать перезапустить сервер или остановить, запустить)
Но после остановки сервера файлы профилирования все еще сохраняются!

-----

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


з.ы. За основу использовался материал отсюда > http://webdev-tales.ru/post/19072925255 ... g-phpstorm

Изображение

Добавлено: 01 окт 2013, 22:43
Максим
Побольше бы таких пользователей как вы :-)
Спасибо, думаю многим пригодится.

Добавлено: 01 окт 2013, 22:53
Redee
пожалуйста пускай юзают, ценная инфа все же (когда-то не мог сразу настроить, убил не один день...), надо было сдублировать, переделав на современный лад так сказать )

Добавлено: 13 ноя 2013, 23:52
flashbogdan
Подскажите пожалуйста,
У меня не определяет Хдебаг вот на этом этапе
File > Settings > PHP >
PHP language level: > выбираем соответствующую версию пхп (5.4)
Interpreter > кликаем на ...
PHP Home > корневой путь к пхп (E:\OpenServer\modules\php\PHP-5.4.17)
Debugger > Xdebug
Name > PHP (можно любое другое)
В ПХП.ини все как описано
[Xdebug]
zend_extension="%sprogdir%/modules/php/%phpdriver%/ext/php_xdebug.dll"
xdebug.auto_trace = 0
;xdebug.collect_includes = 1
;xdebug.collect_params = 0
;xdebug.collect_return = 0
;xdebug.collect_vars = 0
xdebug.default_enable = 0
;xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
;xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD
;xdebug.dump.COOKIE = ""
;xdebug.dump.FILES = ""
;xdebug.dump.GET = ""
;xdebug.dump.POST = ""
;xdebug.dump.REQUEST = ""
;xdebug.dump.SERVER = ""
;xdebug.dump.SESSION = ""
;xdebug.dump_globals = 1
;xdebug.dump_once = 1
;xdebug.dump_undefined = 0
;xdebug.extended_info = 1
;xdebug.file_link_format = ""
xdebug.idekey = "PHPSTORM"
;xdebug.manual_url = "http://www.php.net"
;xdebug.max_nesting_level = 100
;xdebug.overload_var_dump = 1
;xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir="%sprogdir%/userdata/temp/xdebug/"
xdebug.profiler_output_name = "cachegrind.out.%H%R"
;xdebug.remote_autostart = 0
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
;xdebug.remote_log = "none"
;xdebug.remote_mode = "req"
xdebug.remote_port = 9000
;xdebug.show_exception_trace = 0
;xdebug.show_local_vars = 0
;xdebug.show_mem_delta = 0
;xdebug.trace_format = 0
;xdebug.trace_options = 0
xdebug.trace_output_dir = "%sprogdir%/userdata/temp/xdebug/"
;xdebug.trace_output_name = "trace.%H%R"
;xdebug.var_display_max_children = 128
;xdebug.var_display_max_data = 512
;xdebug.var_display_max_depth = 3
Опенсервер последний (4.8.9)
ПХП 5.5.4

Что не так?

Добавлено: 13 ноя 2013, 23:59
Максим
Видимо PHPStorm запущен не из закладок Open Server. Создайте закладку, думаю в этом проблема, поскольку автор не написал ничего про php.ini

Добавлено: 14 ноя 2013, 00:58
flashbogdan
Простите но я вас не понял.
ПХПШторм установлен отдельно.
Что значит запущен не из закладок Опенсервера?
Автор описал настройки ПХП.ини в п.2 туториала...

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

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

Добавлено: 14 ноя 2013, 01:07
Максим
flashbogdan писал(а):Что значит запущен не из закладок Опенсервера?
То и значит, что тут не понятного.
flashbogdan писал(а):Автор описал настройки ПХП.ини в п.2 туториала...
Настройки в файле php.ini это одно, я же речь вёл про совсем другое - про месторасположение этого файла. Поскольку автор ничего об этом не написал, то я думаю в своей инструкции он имел ввиду что запуск программы делается из закладки в Open Server.

Добавлено: 14 ноя 2013, 01:17
flashbogdan
Так и есть.
Добавил ПХПШторм в закладки и Хдебаг определился.
Спасибо!

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

Добавлено: 14 ноя 2013, 01:22
Максим
flashbogdan писал(а):Возможно ли настроить так что бы нормально запускалось с ярлыка?
Можете создать все стандартные параметры окружения PHP в переменных окружения Windows и тогда можно будет запускать с ярлыка (да и то только когда сервер запущен), однако в этом случае нужно будет прописать полные пути и Open Server потеряет портативность.

Добавлено: 24 дек 2013, 13:38
dima-f1
Я расскажу как я пользуюсь дебагером в 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.ini. Для того чтобы это все заработало, в php.ini обязательно следим чтобы были следующие строки и в не закомментированном виде:
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000