Привет всем. В этой статье я расскажу особенности установки и настройки xdebug в Ubuntu based системах, основаных на версии 16.04
1. Установка xdebug.
Так как я использую php5.6 из стороннего репозитория я буду выполнять команду с жестко указанной версией php5.6. Если у Вас установлен PHP и каноникал репозитория путем типичной установки LAMP то вам не нужно указывать версию
// для тех у кого ppa:ondrej/php в зависимости от версии для PHP-5.5 sudo apt install php5.5-xdebug для PHP-5.6 sudo apt install php5.6-xdebug для PHP-7 sudo apt install php7.0-xdebug // Для тех у кого стандартный пакет (LAMP) sudo apt install php-xdebug
2. Ищем путь к so файлу установленного xdebug командой:
sudo find / -name 'xdebug.so'
Для тех у кого PHP установлен стандартным LAMP путем, вывод будет всего одной строкой типа
«/usr/lib/php/7.0/20131226/xdebug.so»
Для тех у кого ppa:ondrej/php вывод будет примерно следующим:
sudo find / -name ‘xdebug.so’
/usr/lib/php/20121212/xdebug.so <—– для PHP5.5
/usr/lib/php/20131226/xdebug.so <—– для PHP5.6
/usr/lib/php/20160303/xdebug.so <—– для PHP7.0
/usr/lib/php/20151012/xdebug.so <—– для PHP7.1
Копируем нужный нам путь, сохраняем временно где-то
3. Редакутируем PHP.INI
Открываем файл sudo nano /etc/php/X.X/apache2/php.ini где X.X версия установленного у вас PHP. Например для PHP-5.6 путь будет таким /etc/php/5.6/apache2/php.ini
sudo nano /etc/php/5.6/apache2/php.ini
В самый конец файла добавляем следующие записи:
[xdebug] ; путь к файлу so, который мы временно сохаринили на шаге раньше zend_extension="/usr/lib/php/20131226/xdebug.so" ; остальные обязательные параметры xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_host=127.0.0.1 xdebug.idekey=PHP_IDE_CONFIG
Перезагружаем apache
sudo service apache2 restart
4. Конфигурируем PHPStorm.
Открываем File -> Settings -> Languages & Frameworks -> PHP
Как вы видите PHP определился и так же определяется xdebug установленный в нем. Нажимаем Apply и OK
Далее переходим там же в вкладе PHP в вкладку Server, нажимаем + (зеленый плюс) добавить и заполняем форму согласно скрина где
1. – Название сервера (может быть любым, но я для удобства именую доменным именем текщего проекта, в моем случае это виртуальный хсот с именем mee.dev)
2. – Виртуальный хост, к которому будет привязана эта конфигурация, в моем случае это все тот же виртуал хост в моей системе с именем mee.dev
Нажимаем Apply и OK.
Далее в правом верхнем углу PHPStorm находим кнопочку “Edit Configuration” открываем.
В открывшейся форме нажимаем зеленый плюс и заполняем согласно скриншоту где:
1. Тип приложения PHP Web Application
2. В поле сервер , тоже с помощью дропдауна, выбираем имя только что созданного нами сервера.
Нажимаем Apply и OK. По желанию можно выбрать дефолтный браузер в котором будет открываться сессия xdebug, но меня устраивает выбор Chrome как браузера по умолчанию, по этому я пропускаю это действие.
5. Тестируем результат.
После успешного применения настроек у нас станут активные некоторые элементы управления типичными настройками xdebug
Открываем код Magento или любой другой CMS или своего проекта и ставим брейкпойнт в таком месте где вы точно убеждены что будет выполнен код PHP, как правило это всегда просто сделать в index.php. Для Magento я поставлю маркер (breakpoint) в файле index.php на строке
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
После нажимаем на “зеленого жука” вверху справа, после чего у Вас инициируется сессия Xdebug и должен открыться браузер или новая вкладка в браузере с адресом указанного хоста проекта и в GET параметре id xdebug сессии вида http://yourhost.dev/?XDEBUG_SESSION_START=13770
В этот момент в непосредственно в PHPStorm вы уже можете видеть результат.
На этом все, если будут вопросы, пожалуйста, задавайте в комментариях. Удачи.
Если у вас все получилось — переходим к более тонкой настройке Xdebug , которая позволит осуществлять отладку кода.
Спс за мануал
У меня добавляет в URL порт, это так должно быть?
http://localhost/magento2/:9000/?XDEBUG_SESSION_START=14817
А как вы узнали в какой директории для какой версии php находится xdebug?
При чем
/usr/lib/php/20160303/xdebug.so <—— для PHP7.0
/usr/lib/php/20151012/xdebug.so <—— для PHP7.1
2015 почему-то для 7.1, а 2016 – для 7.0 – вроде как-то нелогично
Лучший пост. Спасибо
Не за что, заходите 🙂
Здравствуйте, можем с вами посотрудничать?
Да, можем