Настройка xdebug phpstorm linux

Дебаг и профилирование PHP-кода с помощью Xdebug

С помощью систем профилирования можно собрать информацию о том, какие функции и вызовы сколько потребляют процессорного времени, что позволяет выявить наиболее медленные, ресурсоемкие участки PHP-программы.

Существуют «классические» методы отладки — echo, var_dump, print_r, но в этой статье поговорим о более продвинутом способе дебага — xDebug. Расширение php xDebug предназначено для пошагового выполнения кода и просмотра значений переменных, что поднимает программирование на PHP на новый уровень.

В этой статье рассматривается настройка xDebug в IDE PhpStorm.

Подключение xDebug

Для работы xDebug PHP должен работать в режиме CGI. Для переключения режима работы PHP откройте раздел Сайты панели управления, нажмите на кнопку «PHP» напротив нужного домена и поставьте галочку «Режим CGI». На переключение режима работы может потребоваться до 15 минут.

Для включения расширения xDebug нужно добавить следующие строки в конец файла cgi-bin/php.ini (находится в каталоге сайта):

zend_extension = xdebug.so xdebug.remote_enable=1 xdebug.remote_host=127.0.0.1 xdebug.remote_port=3083 xdebug.idekey=PHPSTORM xdebug.remote_autostart=1

В случае, если указанный порт занят, попробуйте выбрать другой порт.

В некоторых случаях может потребоваться указать полный путь к файлу расширения!
При этом первая строка должна иметь следующий формат:

zend_extension = /usr/local/php-cgi//lib/php//xdebug.so

Например, для PHP 5.4 на сервере hugo путь будет таким:

zend_extension = /usr/local/php-cgi/5.4/lib/php/20100525/xdebug.so

Часть пути, включающая версию PHP Extension может отличаться в зависимости от сервера и версии PHP. Посмотреть нужную версию можно при помощи функции phpinfo().
Как создать файл с вызовом функции описано далее в статье.

Если каталог cgi-bin и/или файл php.ini отсутствуют, их нужно создать:

account@server:~/site.com/public_html [0] $ mkdir cgi-bin account@server:~/site.com/public_html [0] $ php5.6 --ini | head -n2 Configuration File (php.ini) Path: /etc/php/cgi/5.6 Loaded Configuration File: /etc/php/cgi/5.6/php.ini account@server:~/site.com/public_html [0] $ cp /etc/php/cgi/5.6/php.ini cgi-bin account@server:~/site.com/public_html [0] $

При необходимости вместо 5.6 можно вызвать PHP другой версии:

+-----------+---------------------+ | Версия | Команда для запуска | +-----------+---------------------| | PHP v4.4 | php4.4 | | PHP v5.2 | php5.2 | | PHP v5.3 | php5.3 | | PHP v5.4 | php5.4 | | PHP v5.5 | php5.5 | | PHP v5.6 | php5.6 | | PHP v7.0 | php7.0 | | PHP v7.1 | php7.1 | +-----------+---------------------+

Для проверки настроек нужно создать в корне сайта файл x.php со следующим содержимым:

В браузере проверяем, подхватились ли настройки php.ini:

В этом примере рассматривается настройка порта 8014. Проверка того, свободен ли выбранный порт (выполняется на Вашем компьютере):

root@supcomp:~# netstat -tlnp Активные соединения с интернетом (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:40103 0.0.0.0:* LISTEN 7081/java tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1223/mysqld tcp 0 0 127.0.0.1:36555 0.0.0.0:* LISTEN 6786/cli tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 1176/systemd-resolv tcp 0 0 127.0.0.1:63342 0.0.0.0:* LISTEN 4682/java tcp 0 0 127.0.0.1:63343 0.0.0.0:* LISTEN 7081/java tcp 0 0 127.0.0.1:5939 0.0.0.0:* LISTEN 1628/teamviewerd tcp 0 0 0.0.0.0:33493 0.0.0.0:* LISTEN 7211/java tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1222/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3575/cupsd tcp 0 0 127.0.0.1:6942 0.0.0.0:* LISTEN 4682/java tcp 0 0 127.0.0.1:6943 0.0.0.0:* LISTEN 7081/java tcp 0 0 127.0.0.1:44385 0.0.0.0:* LISTEN 7211/java tcp6 0 0 . 5355 . * LISTEN 1176/systemd-resolv tcp6 0 0 . 80 . * LISTEN 1387/apache2 tcp6 0 0 . 1716 . * LISTEN 2569/kdeconnectd tcp6 0 0 . 22 . * LISTEN 1222/sshd tcp6 0 0 ::1:631 . * LISTEN 3575/cupsd root@supcomp:~# netstat -tlnp | grep 8014 root@supcomp:~#

Можно выбрать и стандартный порт xDebug — 9000.

Читайте также:  Восстановление загрузчика linux manjaro

Настройка работы IDE PhpStorm с xDebug

Со справкой по установке IDE PhpStorm можно ознакомиться на официальном сайте разработчиков.

Для обеспечения совместной работы xDebug и IDE PhpStorm необходимо создать туннель к серверу с локального компьютера. Команда для Linux и OS X:

$ ssh -R 8014:localhost:8014 account@account.beget.tech

Если Вы используете ОС Windows — Вам понадобится утилита PuTTy, процесс ее установки и настройки описан в этой статье. Для настройки туннеля нужно указать имя сервера либо его IP. Уточнить эту информацию можно в Личном кабинете, в таблице «Общая информация». Порт по умолчанию остается 22, протокол — SSH:

После этого нужно открыть вкладку «Tunnels» и настроить так, как указано на скриншоте. После ввода настроек нужно нажать кнопку «Open»:

Здесь нужно нажать на «Да«:

После чего вводим логин и пароль (они такие же, как и для доступа к Личному кабинету).
Если ранее была настроена авторизация по ключам — вводить логин и пароль не потребуется.

Не забудьте включить SSH в Личном кабинете. Для этого нужно в Панели Управления аккаунтом нажать на переключатель напротив пункта SSH-доступ. Он находится на главной странице слева, в блоке «Тех. информация»:

Если Вы работаете с FTP-аккаунтом, то SSH должен быть включён для него. SSH для FTP-аккаунтов включается в разделе FTP переключателем напротив нужного аккаунта.

Рассмотрим настройку PhpStorm с уже созданным локальным проектом.

Для отображения файлов сайта в PhpStorm нужно произвести некоторые настройки. Во вкладке «Settings» нужно настроить порт, на котором будет работать PhpStorm. В рассматриваемом примере это порт 8014, однако, Вы можете оставить порт по умолчанию — 9000.

Затем во вкладке «Servers» нужно настроить подключение PhpStorm к Вашему техническому домену account.beget.tech на 80 порт (либо 443, если для домена выпущен SSL-сертификат и сайт работает по HTTPS) (необходимо указать домен, на котором ранее был установлен XDebug). В настройках подключения также требуется указать соответствие путей, для этого отметьте галочкой пункт «Use path mappings». В левой части приведён локальный список файлов, справа указывается путь на сервере.

Как правило требуется задавать соответствие только для корневого каталога веб-сервера:

При использовании фреймворков, таких как Yii, Laravel или Symfony, необходимо отдельно указывать пути к директориям, в которых размещаются исходные коды проекта и корневой каталог веб-сервера.
Пример корректной настройки маппингов для проекта на Symfony:

Читайте также:  Включение файла подкачки linux

Далее во вкладке «DBGp Proxy» указываем IDE-key PHPSTORM, который был ранее указан в файле php.ini, затем адрес сервера, который можно посмотреть в Личном кабинете, в таблице «Тех. информация«, и указываем удаленный порт, с которого будeт приходить отладочная информация. Нужно будет нажать «Apply«, затем «OK«:

Для корректной работы дебага может потребоваться настройка конфигурации развёртывания проекта. Для этого откройте пункт меню «Tools» — «Deployment» — «Configuration«. Здесь потребуется указать настройки для подключения к серверу по FTP либо SFTP. Мы рекомендуем использовать протокол SFTP — он более стабилен и безопасен. В качестве имени хоста укажите Ваш технический домен. Далее укажите логин и пароль для входа в систему. При использовании SFTP можно выбрать ключ, с которым выполняется авторизация по SSH. После этого нажмите на кнопку «Autodetect» рядом с пунктом «Root path» — будет определён домашний каталог учётной записи.

При использовании SFTP нажимать на кнопку обзора файловой системы (кнопка с тремя точками справа от поля Root Path) на этой вкладке не нужно. Обзор файловой системы по SFTP начинается с корневого каталога, доступ к которому запрещён, поэтому при попытке просмотра файловой системы возникнет ошибка Permission Denied.

После этого на вкладке «Mappings» укажите каталог, в котором размещены файлы проекта (здесь уже можновоспользоваться функцией обзора файловой системы сервера). Для большинства сайтов путь будет вида «/site/public_html«. При использовании Yii, Symfony, Laravel и некоторых других фреймворков — /site (если Вами не была изменена структура проекта по умолчанию). В нашем примере используется Symfony, поэтому путь указываем без «public_html«

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

Сейчас нужно выставить брейкпоинт, указанный первым пунктом. Выбрав нужную строку php-кода, нужно нажать на область справа от номера строки либо нажать сочетание клавиш «Ctrl+F8«, после чего включить прослушивание порта (стрелка 2), на который xDebug будет посылать ответ при запуске скрипта.

После этого можно открыть сайт в браузере. При первом входящем подключении от Xdebug будет запрошена информация о конфигурации проекта, необходимо выбрать текущий проект и конфигурацию деплоя, которая была настроена ранее. После этого нажмите кнопку «Accept».

По достижении точки останова в PhpStorm откроется дебаг-панель, где будут отображены значения всех переменных на момент обработки кода на месте брейкпоинта:

Читайте также:  Linux version installed command

Также для наглядности значения переменных для исполненных участков кода указываются прямо в редакторе:

Для продолжения работы скрипта требуется нажать на кнопку «Resume Program» в дебаг-панели либо клавишу F9.

Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел «Помощь и поддержка».

Источник

Настройка xdebug phpstorm linux

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда не активна

Ниже приведен пример настройки отладчика XDebug скриптов php для PhpStorm. Почему я выбрал именно PhpStorm — потому, что она самая удобная на мой взгляд.

Установка и настройка XDebug

Итак, начнем. Для начала, нам потребуется установить отладчик и сам php:

Я использую php 5.5, если его нет у вас в репозитории, то можно добавить репозиторий с php 5.5 или оставить свою версию:

sudo add-apt-repository ppa:ondrej/php5

sudo apt-get install php5-xdebug

Ищем, куда установилась библиотека:

find / -name ‘xdebug.so’ 2> /dev/null

Ждем. ждем. и получаем что-то вроде /usr/lib/php5/20100525/xdebug.so

Далее нужно добавить следующие строки в файл /etc/php5/apache2/php.ini , заменив путь к библиотеке xdebug на свой. Открываем файл и добавляем в него строки:

;Подключаем библиотеку: zend_extension = "/usr/lib/php5/20100525/xdebug.so" ;Настройки XDebug xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_host=localhost ;Интеграция с IDE xdebug.idekey=PHP_STORM

sudo service apache2 restart или /etc/init.d/apache2 restart

Настройка самой PhpStorm

Запускаем PhpStorm, далее открываем папку с проектом или создаем новый. Затем идем в File->Settings (Alt+Ctrl+S) и переходим на вкладку PHP->Servers, добавляем новый сервер: Name: «localhost», Host: «localhost», Debugger: «Xdebug». На всякий случай проверим порт отладчика на вкладке PHP->Debug, он должен совпадать с тем, что мы задали в php.ini: Debug port: 9000. Сохраняемся нажатием «Ок» и закрываем окно настроек.

Следующий шаг — это настройка проекта. Идем в меню Run->Edit Configurations.. и добавляем новую настройку нажатием на плюсик, выбираем PHP Web Application. Name: «Пишем название нашего проекта», Server: выбираем ранее созданный «localhost», Start URL: «/имя проекта» и нажимаем «OK»
Ну вот и все, теперь мы можем отлаживать свой проект, устанавливая брейкпоинты в исходниках. 🙂

Теперь давайте настроим нашу IDE для синхронизации локальных файлов с удаленным HTTP сервером через FTP. Приступим.

Идем в Tools->Deployment-Configuration, жмем плюсик и добавляем сервер: Name: «Имя сервера», Type: «FTP». На вкладке Connection заполняем нужные поля: FTP host: здесь все понятно, Root path: «путь к файлам проекта на удаленном сервере». Переходим на вкладку Mappings. Local path: «/путь к локальным файлам проекта». На последней вкладке «Excluded Paths» можно указать файлы и папки, которые будут исключены из синхронизации проекта. Жмем «OK», закрываем окошко и снова переходим в меню Tools->Deployment->Browse Remote Host для отображения и синхронизации файлов проекта с удаленным сервером.

У вас недостаточно прав для того чтобы тут гадить.

Источник

Оцените статью
Adblock
detector