XDEBUG
Создал две ВМ : Ubuntu с PhpStorm , BitrixVM с Битрикс.
На БитриксВМ расскомментил xdebug.ini прописал
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remorte_port=9000
xdebug.remote_handler=»dbgp»
xdebug.remote_host=192.168.129.131
xdebug.idekey=»PHPSTORM»
xdebug.remote_autostart=1
На Ubunte установил PHPstorm , создал проект из файлов удаленного сервера( полностью, с ядром bitrix) , прописал в отладочную конфигурацию удаленный сервер, на BitrixVM добавил доступ к 9000 порту.
C phpstorm запустил прослушку 9000 , нажал жучка , firefox по урл 192.168.129.135:9000/?XDEBUG_SESSION_START =278362 выдал Unable to connect и типа посмотри порты и т.д. — но я то на BitrixVM 9000 открыл, что еще надо, что не так?
| Цитата |
|---|
| msk-develop написал: Коншоуби Бицуев , вы не правильно настроили phpStorm. Когда в PhpStorm создавали сервер для Php Web Application нужно было указать порт 80. Слушать порт 9000 должна ваша убунту, а не BitrixVM. На bitrixVM открывать ничего не нужно. |
| Цитата |
|---|
| для чего прослушка(трубка) — что она включена, что выключена — я ловлю брейкпойнт , инфа в окне дебага есть, в чем дело? |
Из своего опыта. Нажатие на жука открывает страницу в браузере и инициализирует xDebug сессию (?XDEBUG_SESSION_START=XXXXX), при этом PhpStorm неявно начинает слушать порт 9000 (тоже самое происходит и при нажатии трубки), далее открывается блок отладки. Я так делал раньше, когда только начал пользоваться xDebug в PhpStorm.
Сейчас я делаю немного иначе. На сервере в конфиге xDebug (xdebug.ini) прописываю примерно так:
Для сайтов на локальной машине(в BitrixVM):
В данной конфигурации отладочная инфа будет идти на localhost удаленного сервера(на порт 9000). Направить поток на свой комп можно с помощью SSH туннеля. Можно конечно вписать и ваш IP если он белый, статический и по нему можно достучаться до вашего компа.
Порт при желании можно изменить в PhpStrom здесь: File — Settings — Languages & Frameworks — PHP — Debug
Для Chrome очень удобно пользоваться расширением Xdebug helper .
В итоге чтобы запустить отладку нужно:
1. Нажать на значок жука в Chrome. Выбрать Debug. Жук должен стать зеленым.
2. В PhpStorm нажать на иконку с «трубкой».
3. Поставить брейкпоинт.
4. Обновить страницу.
Источник
Установка и настройка Xdebug
Есть очень хороший инструмент для отладки php кода — Xdebug. Сегодня я расскажу как его развернуть на своей машине, а также как настроить NetBeans IDE на работу с ним.
Немного о Xdebug
Основной целью расширения является максимально возможное упрощение отладки PHP-скриптов и добавление в разработку на PHP таких удобств, как точки останова, пошаговое выполнение и наблюдение за выражениями, которое мы привыкли видеть только в компилируемых языках программирования.
Помимо этого, расширение позволяет выполнять профилировку приложения и находить те части, которые замедляют его работу. Поддерживается также выполнение произвольного кода на точке останова. Xdebug стилизирует вывод ошибок, благодаря чему, читать ошибки становится гораздо удобнее. Кроме того, есть возможность самому указать, что будет выводиться при ошибке. На этом список возможностей не заканчивается, уж поверьте, у Xdebug также есть ряд других полезных при отладке функций.
В целом, расширение нужно, в первую очередь, для экономии времени разработчиков, так как позволяет быстрее локализовать ошибку в коде.
Установка Xdebug
Уже довольно давно Xdebug, как расширение для php, присутствует в репозиториях. Поэтому его установка очень проста, для этого введите в консоли следующую команду.
С установкой покончили. Перейдем к настройке.
Настройка Xdebug
Настройка расширения выполняется при помощи редактирования конфигурационных ini файлов. Тут есть два пути:
1. В php.ini создаем секцию [xdebug] и в ней задаем параметры.
2. Все параметры задаем в xdebug.ini, который хранится тут /etc/php5/conf.d/xdebug.ini
Тут решать Вам и только Вам.
Куда писать — определились. Определимся что писать?
Давайте я приведу список настроек, и поясню, что они означают:
После, необходимо чтобы наши изменения подтянулись.
Для этого нужно перезагрузить apache или php-fpm (в зависимости от того, что Вы используете).
Чтобы убедиться, что все хорошо, выведите
phpinfo();
Если такой текст имеется — значит все отлично:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
Теперь проверим улучшенный var_dump:
Вы должны увидеть красивый стилизированный вывод содержимого массива.
Теперь создадим ошибку (забудем ; в конце строки)
Вы должны увидеть подробное сообщение об ошибке, представляющее собой таблицу.
Настройка PhpStorm
Настройка NetBeans IDE
Устанавливаем NetBeans, если он еще не установлен. Заходим в Сервис → Параметры. Переходим в меню PHP, далее вкладка Отладка (Debugging).
И указываем следующие значения.
Порт отладчика: 9000
Идентификатор сеанса: netbeans-xdebug
Хочу отметить, что порт сеанса, как и идентификатор сеанса могу быть другими. Например, можно указать идентификатор ide-xdebug , но тогда и в конфигах Xdebug придется указать такое же значение.
Остальные параметры настраиваем под себя.
Ну, а о том, как выполнять отладку — в другой раз.
Источник
Drupal Русскоязычное сообщество
Вообщем, решил поделиться своим опытом новичка, как настроить XDEBUG для отладки и диагносткики PHP кода, так сказать по свежим памяти, т.к. я потратил на это дело несколько дней, собирая информацию по крупицам из блогов и порталов, сопоставляя и анализируя. Почему? Да потому что даже на официальном сайте разработчика модуля написано невнятно и непонятно для новичка.
Итак, решая одну из [#42126]задач[/#], встала необходимость пройтись по шагам в теле фунции tеmplate_preprocess_node. В качестве среды для отладки я выбрал Eclipse PDT, в качестве модуля для отладки PHP кода — XDEBUG, в качестве web-сервера, на котором работает Drupal 6.16 — Denwer. Ну и все это я делал под Windows XP SP3.
Denwer установился и заработал без проблем, Eclipse PDT тоже не создала проблем при установке и работе, с чем я намучился, так это с тем, как заставить модуль XDEBUG работать, поэтому дальше информация касается только этой стадии.
Шаг 1. В моей версии Denwer был установлен PHP версии 5.2.12, поэтому я скачал модуль php_xdebug-2.1.0beta3-5.2-vc6.dll. Как видно из названия модуля, это последняя на текущий момент версия 2.1.0 beta3, эта версия предназначена для PHP версии 5.2, и компилировалась под Microsoft Visual Studio 6.0. Более того эта версия комплилировалась для работы в режиме Thread Safety (смотри опцию Thread Safety для PHP, она должа быть enable, что можно посмотрев через phpinfo()).
Шаг 2. Теперь необходимо скопировать данный модуль в директорию расширений для PHP, в данном случае для Denwer это Z:\usr\local\php5\ext\, где диск z: — это виртуальный диск, созданый Denwer.
Шаг 3. Настойка php.ini. Для web-сервера Denwer он находится в Z:\usr\local\php5\php.ini. Открыв его, например, в блокноте, необходимо перейти в конец файла и добавить следующее:
[xdebug]
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_log = «z:\xdebug.log»
zend_extension_ts=»z:\usr\local\php5\ext\php_xdebug-2.1.0beta3-5.2-vc6.dll»
Описывать отдельные строки я не буду, т.к. их назначение можно прочитать на сайте разработчика, но обращу внимание не следующие важные нюансы.
Нюанс 1. В разделе подключение модулей как расширений PHP прописывать что-то типа
категорически нельзя, если это сделать, то модуль XDEBUG работать не будет, а при запуске php.exe вы получите следующее сообщение:
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0
Нюанс 2. В php.ini, который устанавливается с Denwer, есть такая секция:
[Zend]
zend_extension_ts = «/usr/local/php5/zend/ZendExtensionManager.dll»
zend_extension_manager.optimizer_ts=»/usr/local/php5/zend/»
zend_optimizer.enable_loader = 1
zend_optimizer.optimization_level = 15
Так вот из-за несовместимости модуля php_xdebug-2.1.0beta3-5.2-vc6.dll с модулем ZendExtensionManager.dll необходимо сделать сделующее:
[Zend]
;zend_extension_ts = «/usr/local/php5/zend/ZendExtensionManager.dll»
zend_extension_manager.optimizer_ts=»/usr/local/php5/zend/»
zend_optimizer.enable_loader = 1
zend_optimizer.optimization_level = 15
т.е. закомментировать все строки в секции Zend, если вы этого не сделаете, то при запуске php.exe получите следующие сообщения:
Failed loading /usr/local/php5/zend/ZendExtensionManager.dll
Ну и последнее что надо сделать, это создать страницу с именем, например, phpinfo.php и прописать в ней , и запусить ее набрав в браузере http://localhost/phpinfo.php, вы должны обязательно найти в начале страницы что-то типа
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with Xdebug v2.1.0rc1-dev, Copyright (c) 2002-2010, by Derick Rethans
и ближе к концу описание модуля XDEBUG
xdebug
xdebug support enabled
Version 2.1.0rc1-dev
Т.е. как и везде пишут 2 раза упоминание об XDEBUG.
Вот собственно все нюансы, которые необходим знать чтобы у вас все заработало.
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Скачал модуль, установил, все ок. На странице phpinfo пишет все как вы сказали. Но если запустить php.exe то там строка
Failed loading /usr/local/php5/ext/php_xdebug-2.1.0-5.2-vc6.dll
и не создаются файлы по указанному адресу..
В чем может быть проблема?
Может быть уже поздно отвечать, но это может быть связанно с неправильной версией библиотеки. Можно попробовать другие версии библиотеки у меня например стоит библиотека: php_xdebug-2.1.0beta3-5.2-vc6.dll версия 2.1.0.3 размер 140 КБ (143 424 байт).
спасибо, но я уже сам нашел решение
в чем была проблема?
это было давно, я уже не помню в чем конкретно была проблема, по-моему пути не верно указал.
Источник
Отладка с помощью XDebug и PhpStorm на примере сайта 1С-Битрикс
В этой статье я расскажу как удобно осуществлять отладку кода в PhpStorm на примере работы с веб-сайтом, работающем в системе 1C-Битрикс. Работать будем с IDE PhpStorm и отладчиком XDebug. Я предполагаю, что на вашем сервере уже установлен XDebug и у вас уже создан проект в PhpStorm.
В данной статье примеры приводятся с таким набором инструментов:
- Веб-сервер — MAMP PRO
- XDebug v2.2.3.
- IDE PhpStorm 7.1
- На моем локальном серевере установлен 1С-Битрикс 14 версии с решением интернет-магазина.
Во время разработки часто приходится использовать функции типа print_r() или echo для вывода данных на экран. Я сам лично до недавнего времени использовал функции типа:
Эта функция печатала массив на экран и уже в таком виде я его разбирал и вносил в код правки. Но что же делать, если принт огромного $arResult на странице недопустим? Что если на сайте уже есть посетители и выводить системную информацию категорически нельзя (для удаленного дебага будет полезна статья)? Тогда появляются еще более интересные функции типа:
Такая функция выводит принты на экран только для администраторов сайта, что частично решало возникшую проблему, но удобство использования такого решения оставляют желать лучшего.
XDebug и PhpStorm
Эти два продукта дают нам возможность отказаться от вышеописанных функций да и вообще вывода переменных на экран при отладке приложения и получать данные прямо в IDE в удобном и читаемом виде:
Выше на скриншоте мы можем наблюдать объект $APPLICATION в окне дебага файла /index.php. Мы получили полную информацию об объекте, в сгруппированном виде, при этом мы можем наблюдать тип данных каждого элемента в объекте. И (внимание!) мы при этом нигде не писали ни каких var_dump() или print_r()!
Настройка PhpStorm для отладки с помощью XDebug
Перед тем как начать пользоваться такой прелестью нам нужно совершить несколько действий:
1. Настроить XDebug на сервере
Первым делом мы должны убедиться, что на серевере установлен XDebug. В данной статье я не буду рассматривать процесс установки XDebug на сервере, об этом есть много статей в интернете. Лишь покажу что нужно было сделать в MAMP, чтоб активировать XDebug:
Все действия совершались с файлом php.ini для сборки PHP версии 5.5.3. Как добраться к этому файлу в MAMP — ниже на скриншоте
В этом файле нужно раскоммертировать строку
zend_extension=»/Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so»
и дописать строку
xdebug.remote_enable=1
После этого phpinfo() выдаст нам такую информацию:
XDebug готов к работе.
2. Настроить PhpStorm
Для получения данных от сайта в IDE нам нужно их подружить. Для начала нужен правильно настроенный сервер, к которому коннектится IDE при деплое. Переходим в настройки PhpStorm -> Deployment. Тут важен параметр Webserver Root URL, нужно указать URL корня вашего сайта. Пример моих настроек ниже:
Далее переходим к настройке XDebug в PhpStorm: главное меню Run -> Edit Configurations
Нажимаем на плюс, чтоб добавить новую настройку для дебага.
Выбираем настройку Php Web Application
Тут нужно настроить инструмент с помощью которого осуществляется дебаг, нажимаем на кнопку рядом с настройкой сервера:
Нажимаем на плюс, заполняем имя, хост сайта и нажимаем на Validate remote environment.
Там выбираем из списка тот сервер, который настраивали выше и нажимаем Validate
Если валидация прошла успешно, то мы готовы к дебагу. Применяем все сохраненные настройки и возвращаемся в редактор.
3. Расстановка брейкпоинтов (breakpoints)
Чтоб узнать значения переменных в текущем коде, нужно сообщить нашей IDE в каком именно месте кода мы хотим получить нужные нам значения. Для этого предусмотрен функционал брейкпоинтов. Выбираем нужную строку php-кода и нажимаем на область справа от номера строки.
4. Запуск дебага
Далее нужно включить прослушивание 9000 порта, на который XDebug будет посылать ответ при запуске скрипта, и нажать на зеленого жука слева (расположений кнопок в windows версии PhpStorm может отличаться).
После нажатия на жука у нас должен открыться браузер
и через несколько секунд снова откроется PhpStorm с дебаг-панелью, где будут значения всех переменных на момент обработки кода месте брейкпоинта
Источник