УрокНастройка отладчика xDebug между IDE PhpStorm и сервером Open Server
Начну с небольшого вступления. PhpStorm использую в качестве IDE т.к. считаю её лучшим продуктом для разработки, который включает в себя огромное количество плюшек. Open Server - сервер, с которым я познакомился совсем недавно, однако он полностью меня покорил своей скоростью работы и лёгкостью управления.
Без отладки кода в пошаговом режиме жить довольно сложно, даже krumo или debug() не могут мне это заменить. Сегодня я столкнулся с острой необходимостью настроить дебагер под Open Server, и наткнулся на несколько подводных камней, которые не столь очевидны, как хотелось бы. Итак, ближе к телу.
Настраиваем Open Server
Первое. В описании Open Server сказано, что xDebug настроен на сервере только для PHP 5.3, поэтому останавливаем сервер, открываем в трее Open Server -> Настройки -> Вкладка "Модули" и меняем версию PHP на 5.3.
Второе. Лезем в Open Server -> Инструменты -> Конфигурация -> PHP 5.3.9. По сути, вам просто надо найти параметр xdebug.remote_enable и установить его значение в 1, убрав точку с запятой в начале названия:
xdebug.remote_enable = 1
Настраиваем PhpStorm
Теперь открываем PhpStorm и открываем папку с нашим проектом. После чего идём копаться в его настройках (Ctrl + Alt + S). Находим вкладку PHP, нажимаем, потом кликаем на Servers. В появившемся окне справа нажимаем на + (добавляем новый сервер):
После этого в поле Name вводим любое имя (например, OpenServer). В поле Host вводим название сайта на локальном сервере. Т.е. то имя сайта, по которому вы заходите на локальный сайт, когда OpenServer включен. У меня один из сайтов носит короткое название pg (даже без доменной зоны), поэтому я его и указал.
Теперь важное: во-первых, нажмите галочку Use path mapping. Во-вторых, в колонке под Path on server вы должны указать путь к файловой директории вашего сайта, относительно веб сервера. Т.е. если OpenServer стоит на диске W, а сайт назвается pg, то путь будет как на скриншоте:
W:\html\pg\www\
Если же диск или имя сайта другие - просто достаточно поменять значения на свои.
После добавления сервера сохраняем настройки путём нехитрого нажатия на кнопку ОК. Далее на панели PhpStorm'a нажимаем на кнопку добавления конфигурации для дебагера:
Далее выбираем Edit Configuration. В появившемся окне снова нажимаем на плюсик и выбираем PHP Web Application:
Теперь вводим имя для нашей конфигурации (например, openserver). После чего в качестве сервера выбираем созданный нами ранее OpenServer, и браузер, в котором будет открываться сайт (у меня это Firefox) и сохраняем конфигурацию:
Далее открываем код, напротив строки, с которой хотите начать отладку, ставите BreakPoint простым кликом на полях. После чего нажимаете на кнопку Debug (Shift + F9):
Вот и всё, дебаг настроен:
Строка кода, на которой находится дебагер, выделена синим цветом. Снизу расположены переменные, доступные на тот момент, когда дебагер находится на определённой строке. Чтобы сделать следующий шаг дебагером нажимайте F8, чтобы продолжить выполнение кода без дебагера - жмите F9. Полный мануал по работе с отладчиком в PhpStorm вы можете почитать здесь.
Приятной отладки!
- Spleshka
- 14.02.2012
- 68548
Комментарии
Спасибо, но PhpStorm коммерческий, его нельзя использовать на рабочем месте. Есть варианты?
NetBeans — хорошая IDE для PHP. Бесплатная, кросс-платформенная. Обязательно попробуйте, если до этого не пробовали.
125 $ это копейки, если ты работаешь на нем, а не смотришь!
Щикарно ))
13 числа задумал потестировать сборки.
Прошелся по самым известным , всякие wamp`ы , xampp`ы , денверы.
На хабре наткнулся на свежую февральскую статью об Open server.
Пошел сразу туда , поставил на закачку и решил пробежаться по форуму .
Зашел в "Полезые советы" > "Настройка xDebug на PhpStorm + OpenServer" и был приятно удивлен ссылке на знакомый блог )), да еще и со статьей которую ждал 2 месяца).
Кстати , в моем случае одной строки xdebug.remote_enable = 1 для настройки было мало. Пришлось еще в мануал глянуть.
Мне бы интересно было взглянуть на отладку конкретного примера , в качестве испытуемого можно взять тему из ядра . В формате видео было бы вообще здорово . Можно даже особо не комментировать.
Это все конечно , если будет свободная минутка , а от работы отвлекать не хочу , сам очень занят , понимаю).
Кстати , чуть не забыл , пару дней назад наткнулся на довольно свежее видео по теме .
Там используется связь с браузером .
Снова с великой благодарностью!
Только вот:
Warning: file_put_contents(temporary://filF433.tmp) [function.file-put-contents]: failed to open stream: "DrupalTemporaryStreamWrapper::stream_open" call failed в функции file_unmanaged_save_data() (строка 1904 в файле W:\html\MySite\www\includes\file.inc).
Невозможно создать файл.
Warning: file_put_contents(temporary://filF453.tmp) [function.file-put-contents]: failed to open stream: "DrupalTemporaryStreamWrapper::stream_open" call failed в функции file_unmanaged_save_data() (строка 1904 в файле W:\html\MySite\www\includes\file.inc).
Невозможно создать файл.
Не подскажите, в чем дело?
Настрой папку для временного хранения файлов в друпале
Это ясно , интересно почему так случилось .
Вы уж не серчайте на дилетанта, плиз:Настрой папку для временного хранения файлов в друпале
Я не совсем понимаю (
На сервере всё в норме, на Денвере - тоже. Такое ощущение, что это в php.ini надо корректировать. Надо только знать, что именно, пардон.
Гугл мне пока не помог. Может я не тот вопрос задаю? ;)
Заранее благодарен.
p.s. А вообще Open Server меня очаровал своей легкостью и "шустростью". Показалось, что даже винт не так напрягается :)
Протупил, согласен! :)
Евгений, надеюсь, ты грехи отпускаешь... Каюсь! :)
Друпалил ли ты на ночь, сын мой?
Тем, кто пользуется NetBeans: почему-то при отладке не срабатывают точки останова. :( Просто выполняется весь код. Может известны причины?
Вроде всё по инструкциям настраивал... Если есть мысли, поделитесь, пожалуйста.
Друг, спасибо за статью.
А у меня при нажатии на дебаг вылазит окошко "Firefox уже запущен, но не отвечает. Чтобы открыть новое окно, вы должны сперва завершить запущенный процесс Firefox или перезагрузить компьютер". Как быть?
Пардон. Настроил.
Прописал в шторме и в конфиге айди.
xdebug.idekey = "phpstorm"
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_port = 9000
Сделал на тебя ссылку с подобной инструкцией в handbook
Спасибо за руководство. Очень подробно. Помогло!
Спасибо за мануал!
У меня заработало при еще одном условии - включить настройку "Всегда использовать вирт диск" в OpenServer.
По умолчанию стояло автоопределение (диск не создавался) и абсолютный путь вида E:\html\pg\www (E - реальный логический диск, в котором установлен сервер) не работал
Здравствуйте, а Вы не знаете, почему по нажатию на дебаг, в браузере всегда пишется "Ожидание ( домен )" ,а в самом шторме всегда вот так :

и так всегда, даже если я ошибки делаю и точки остановы ставлю?
Тоже такая же проблема, получилось ли решить проблему?
как решили проблемку?
Для сервера xampp надо в php.ini раскомментировать блок [XDebug], и поправить параметр xdebug.remote_enable = 1. В PHPStorm в настройках PHP->Servers не ставить галочку "Use path mappings"
В Коделобстер-е дебаггер сделан приятнее и сразу сам настраивается
+есть специальный плагин для Друпала
только плагин для друпала - платный :(
СПАСИБО МЫ ЕЩЁ ХОТИМ ТАКИЕ ХОРОШИЕ СТАТЬИ!!!! :):):):)
правда сначала не получилось.. НО КЛАСС!!!
Инфа о дебаггере появилась в phpinfo, но сам дебаггер не запустился пока я не прописал в php.ini настройку xdebug.extended_info=1. Сижу на PhpStorm 8.0.3, Windows 7 x64, OpenServer 5.2.2
Комментировать