Меню

Xdebug установка и настройка



Установка и настройка Xdebug + PHPStorm в Ubuntu 16.04 / Elementary OS 0.4 (Loki) / Mint 18

Привет всем. В этой статье я расскажу особенности установки и настройки xdebug в Ubuntu based системах, основаных на версии 16.04

1. Установка xdebug.
Так как я использую php5.6 из стороннего репозитория я буду выполнять команду с жестко указанной версией php5.6. Если у Вас установлен PHP и каноникал репозитория путем типичной установки LAMP то вам не нужно указывать версию


2. Ищем путь к so файлу установленного xdebug командой:

Для тех у кого PHP установлен стандартным LAMP путем, вывод будет всего одной строкой типа
«/usr/lib/php/7.0/20131226/xdebug.so»

Для тех у кого ppa:ondrej/php вывод будет примерно следующим:
sudo find / -name ‘xdebug.so’
/usr/lib/php/20121212/xdebug.so 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 на строке

После нажимаем на «зеленого жука» вверху справа, после чего у Вас инициируется сессия Xdebug и должен открыться браузер или новая вкладка в браузере с адресом указанного хоста проекта и в GET параметре id xdebug сессии вида http://yourhost.dev/?XDEBUG_SESSION_START=13770
В этот момент в непосредственно в PHPStorm вы уже можете видеть результат.

На этом все, если будут вопросы, пожалуйста, задавайте в комментариях. Удачи.

Источник

Installation

This section describes on how to install Xdebug.

Installing with PECL

You can install Xdebug through PECL on Linux & macOS with Homebrew . Run:

Warning: You should ignore any prompts to add «extension=xdebug.so» to php.ini — this will cause problems.

In some cases pecl will change the php.ini file to add a configuration line to load Xdebug. You can check whether it did by running php -v . If Xdebug shows up with a version number, than you’re all set and you can configure Xdebug’s other functions, such as , or Profiling.

If pecl did not add the right line, skip to the Configure PHP section.

1 On macOS, you should have PHP installed with Homebrew.

Installing on Windows

There are a few precompiled modules for Windows, they are all for the non-debug version of PHP. You can get those at the download page. Follow these instructions to get Xdebug installed.

Installation From Source

Obtain

You can download the source of the latest stable release 2.9.8.

Alternatively you can obtain Xdebug from GIT:

This will checkout the latest development version which is currently 3.0.0beta1. This development branch might not always work as expected, and may have bugs.

You can also browse the source on GitHub at https://github.com/xdebug/xdebug.

Compile

There is a wizard available that provides you with the correct file to download, and which paths to use.

You compile Xdebug separately from the rest of PHP. You need access to the scripts phpize and php-config . If your system does not have phpize and php-config , you will need to install the PHP development headers.

Читайте также:  Возможны неполадки в настройках беспроводного адаптера проверьте автоматическое получение

Debian users can do that with:

And RedHat and Fedora users with:

It is important that the source version matches the installed version as there are slight, but important, differences between PHP versions. Once you have access to phpize and php-config , take the following steps:

Unpack the tarball:

tar -xzf xdebug-2.9.8.tgz

You should not unpack the tarball inside the PHP source code tree. Xdebug is compiled separately, all by itself, as stated above.

If phpize is not in your path, please make sure that it is by expanding the PATH environment variable. Make sure you use the phpize that belongs to the PHP version that you want to use Xdebug with. See this FAQ entry if you’re having some issues with finding which phpize to use.

Configure PHP

Add the following line to php.ini :

To find out which php.ini file to modify, run a script with the following:

Alternatively, you can run php —ini on the command line.

Note: There could be more than one php.ini file. In many set-ups there is a different one for the command line (often cli/php.ini ) and the web server (often fpm/php.ini ).

Note: If you want to use Xdebug and OPCache together, you must have the zend_extension line for Xdebug below the line for OPCache. Otherwise, they won’t work properly together.

Restart your webserver, or PHP-FPM, depending on what you are using.

Verify that Xdebug is now loaded.

Create a PHP page that calls xdebug_info(). If you request the page through the browser, it should show you an overview of Xdebug’s settings and log messages.

On the command line, you can also run php -v . Xdebug and its version number should be present as in:

With Xdebug loaded, you can now enable individual features, such as Step Debugging, or Profiling.

This site and all of its contents are Copyright © 2002-2020 by Derick Rethans.
All rights reserved.

Источник

Настройка Xdebug на виртуальной машине, удаленном сервере и в Docker контейнере

Привет, товарищи разработчики! Сегодняшний пост будет полезен всем PHP-разработчикам, так как речь пойдет о настройке такого инструмента отладки, как Xdebug. В рамках данного поста я расскажу как запустить Xdebug на виртуалке, на удаленном сервере через SSH-туннель и даже внутри Docker контейнера.

Тот кто внимательно следит за блогом скажет, что мол была уже запись про отладку кода в PhpStorm с использованием Xdebug и сколько можно об этом писать. Да, об этом писал и по-прежнему рекомендую пост к прочтению, если хотите разобраться в самом процессе отладки кода. Этот же пост нацелен на более нетривиальные задачи по настройке Xdebug.

В отличие от предыдущего поста сегодняшнюю настройку Xdebug мы будем производить уже без использования OpenServer, от которого я кстати рекомендую отказаться, если вы считаете себя более ли менее продвинутым разработчиком. Для продвинутых разработчиков нынче в тренде Linux. Что касается меня, то я так и не решился перейти полностью на Linux — использую по-старинке Windows 7 и серверную Ubuntu 14.04, запущенную на виртуалке средствами VirtualBox. Не могу сказать, что проще: перейти полностью на Linux или остаться на Windows, но с виртуальным Linux и кучей головняка по синхронизации файлов. По своему опыту могу сказать, что за полгода-год удается, как правило, решить все проблемы связки Windows + Linux и работать без особых проблем.

Собственно, к чем был предыдущий абзац — к тому, что сегодняшняя лекция по настройке Xdebug будет полезна прежде всего тем, кто, как и я, использует Windows в качестве основной системы и Linux в качестве оси на виртуалке. Хотя закоренелые пользователи Linux может тоже найдут, что-нибудь полезное.

Для начала давайте я расскажу про конфигурацию своего сервера, на котором все стабильно работает:

Установка Xdebug на сервер

Надеюсь, у вас уже есть сервер, на котором установлен как минимум PHP. Для установки Xdebug на Ubuntu или Debian вам понадобится всего несколько команд:

Ну вот, Xdebug должен быть успешно установлен. Осталось только его настроить — для этого необходимо создать .ini-файл с нужными параметрами и положить в директорию, с которой PHP зачитывает конфиги. В моем случае — это / etc / php5 / mods — available / .

Читайте также:  Настройка регулятора напряжения генератора

Создаем файл xdebug.ini:

Сохраняем файл ( CTRL + X ) и перезапускаем веб-сервер, чтобы применить настройки:

Это еще не конечная настройка Xdebug, но на данном этапе мы уже сможем проверить подхватывает ли PHP наши настройки. Для этого воспользуйтесь либо консольной командой php — i | grep «xdebug» , либо php-файлом с функцией phpinfo ( ) ; на одном из сайтов, расположенных на вашем сервере.

Если у вас все получилось — переходим к более тонкой настройке Xdebug , которая позволит осуществлять отладку кода.

Настройка Xdebug на виртуалке (VirtualBox)

Следующим шагом будет настройка как Xdebug , так и PhpStorm для отладки web-приложения, которое запускается с вашего виртуального сервера. Другими словами: у вас есть сайт на Drupal и вы хотите заняться отладкой кода, запуская сайт через любимый браузер.

Конфиг для xdebug.ini :

И не забывайте делать рестарт вашего web-сервера после каждого изменения xdebug.ini .

Из важных настроек:

  • xdebug.remote_connect_back — если данный параметр активен, то Xdebug пытается подключиться к клиенту, которым был совершен HTTP запрос. Данная настройка удобная если вы не хотите указывать фиксированный IP-адрес .

Теперь необходимо настроить наш IDE — PhpStorm . По умолчанию PhpStorm слушает 9000 порт, однако это можно изменить где-то глубоко в настройках. В настройках Run/Debug Configurations добавляем PHP Web Application и конфигурируем, как показано на скриншотах.

В качестве Host указываем локальное доменное имя вашего приложения. Сразу хочу оговориться про «8080» порт — это специфика моей виртуалки, у вас все может быть по-другому. Не забудьте настроить маппинг — крайне важно! Собственно, через маппинг вы указываете соответствие между файлами, которые лежат на вашей основной системе (Windows), и файлами, которые лежат на виртуальном сервере (Linux).

Если все настроили верно, то после запуска отладки (клик по зеленому «жуку» или Shift + F9 ) вас должно перебросить в браузер, где будет открываться сайт по URL вида: http://www.nvidia.loc:8080/?XDEBUG_SESSION_START=10261 . На этом настройка закончена, можете смело переходить к отладке, которая уже описана в другой заметке.

Кстати, если вам необходимо остановить работу Xdebug , то добавьте параметр ?XDEBUG_SESSION_STOP к запрашиваемой странице. Многие ошибочно полагают, что можно остановить отладчик через PhpStorm , но это не всегда срабатывает. Поэтому, если у вас есть подозрение, что сайт завис и не открывается из-за Xdebug — попробуйте воспользоваться этим советом.

Настройка Xdebug для отладки PHP-CLI скриптов

Представьте, что вам необходимо заняться отладкой скриптов, которые хоть и написаны на PHP, но запускаются через консоль — через так называемый PHP-CLI. Мне приходилось с этим сталкиваться при работе с RabbitMQ и CodeCeption . Для настройки я рекомендую создать какой-нибудь тестовый php-скрипт (например, test.php с парой математических выражений и ответом, который выводится через «echo» ) и положить его в проект (на сервере и на Windows). Убедитесь, что скрипт работает запустив его:

Конфиг для xdebug.ini :

Главное отличие от выше предложенных настроек — это то, что xdebug.remote_connect_back отсутствует по причине того, что при запуске скрипта через консоль отсутствует переменная $_SERVER [ ‘REMOTE_ADDR’ ] , которая содержит IP-адрес клиента, по которому Xdebug пытается подключиться. Поэтому мы должны использовать фиксированный IP-адрес. Если вы используете VirtualBox, то этот IP-адрес будет, как правило, «192.168.56.1«.

Настройки для PhpStorm можно оставить прежними. Однако потребуется сделать еще один финт ушами на стороне сервера, чтобы отладка кода проходила как по маслу. Дело в том, что с текущими настройками Xdebug ломится на 9000 порт, но не понимает какую схему для маппинга использовать. Поэтому в командной строке сервера пишем следующую команду:

Обратите внимание, что «MyServ» — это имя Server’a, которое мы указали при настройке отладчика в PhpStorm. Кстати, чтобы каждый раз не прописывать эту команду при подключении к вашему серверу, можете поместить ее в

Далее в PhpStorm активируйте режим «Start Listening for PHP Debug Connections» , установите Breakpoint и запустите php-скрипт в консольном окне.

Если вам необходимо отключить отладчик — просто отключите режим прослушивания PHP Debug подключений, кликнув по той же самой кнопке.

На самом деле вы можете использовать предложенный в этой главе конфиг xdebug.ini и для отладки тех же Web-приложений. Я просто хотел объяснить суть параметра xdebug.remote_connect_back на примерах, поэтому привел разные конфиги для двух глав.

Читайте также:  Настройки для принтера canon ip1000

Настройка Xdebug для удаленного сервера

Представьте ситуацию, что у вас есть удаленный сервер, на котором крутится сайт и вы хотите подлезть к нему с отладчиком. Основная проблема заключается в том, что скорее всего вы используете общий IP-адрес для выхода в интернет, что не позволит вам работать с Xdebug напрямую. Да, ситуация нестандартная, но не стоит отчаиваться: решение есть и имя ему SSH-туннель. Если не знаете, что это такое, то рекомендую задать следующие вопросы Google: «ssh туннель», «проброс портов» или же «ssh port forwarding». Если в двух словах, то мы создадим подключение, которое пробросит 9000 порт от сервера на 9000 порт хостовой системы, через который уже работает PhpStorm .

Если ваша хостовая система Windows, как и у меня, то скорее всего придется использовать тулзу PuTTy, которую вы уже должны были установить, если читали мой пост про настройку среды для разработчика Drupal проектов. Опять же, я не буду вдаваться в подробности, как настроить стандартное подключение через PuTTy — я думаю, что люди, которые хоть раз работали с удаленным сервером, знают как это делается. Проброс 9000 порта описан в следующем скрине:

Т.е. вы берете сохраненное подключение и всего лишь модифицируете указанным образом. Теперь при каждом подключении к серверу через PuTTy у вас будет осуществляться проброс 9000 порта, что позволит вам решить проблему общего IP-адреса.

Конфиг для xdebug.ini для удаленного сервера:

Что касается настроек PhpStorm , то вам придется создать новый PHP Web Application и новый Server по аналогии с настройкой отладчика для виртуалки. Не забудьте настроить верный маппинг для файлов!

Настройка Xdebug в Docker контейнере

Пожалуй, это была самая интересная задача, связанная с настройкой Xdebug , на моей памяти. Что такое Docker я опять же в рамках этой статьи рассказывать не буду, но скажу, что Docker — это клевая штука, и думаю, что в ближайшие годы многие с ней столкнуться. Пусть эта глава будет бонусом для тех, кто более ли менее уже щупал в руках Docker и хочет настроить собственный Docker Image для разработки.

Настраивать Xdebug придется в том же контейнере, где крутится PHP и Web-сервер. Для примера я набросаю более ли менее рабочий вариант Dockerfile, в основу которого положен PHP Official образ.

Первым подводным камнем является тот момент, что придется тянуть OpenSSH в контейнер — без этого вы просто не сможете настроить удаленное подключение для проброса 9000 порта. Вторым камнем будет проблема с запуском нескольких бэкграунд процессов в контейнере: первый процесс — это Apache, второй — притянутый нами OpenSSH. Дело в том, что Docker запускает только один процесс, указанный через CMD в Dockerfile — с этим я в своем время провозился больше всего. Решением проблемы запуска нескольких бэкграунд процессов в контейнере является Supervisor.

В общем, представляю вашему вниманию пример Dockerfile, который позволит вам использовать Xdebug в Docker контейнере на удаленном сервере:

Содержимое для supervisor.conf:

Ну и собственно bash-скрипт, который соберет вам контейнер:

Я не обещаю, что контейнер с предложенным мною конфигом сразу же у вас заведется. Скорее всего вам придется потратить какое-то время, чтобы разобраться и допилить его под свои нужды. После того, как контейнер заведется проверьте подхватился ли Xdebug и попробуйте настроить SSH подключение: в качестве пользователя используйте «dev», в качестве хоста — IP-адрес сервера, в качестве порта — выбранный порт при запуске контейнера ( 32777 из примера). Если у вас получилось подключиться — добавьте в подключение проброс порта и можете приступать к отладке!

На самом деле я думаю сделать отдельную статью о том, как с помощью Docker‘a настроить среду для разработки. Поэтому сейчас, пожалуй, не буду вдаваться в подробности его использования. Надеюсь, предоставленных данных будет достаточно для настройки Xdebug тем, кто уже имеет опыт работы с Docker’ом.

Ну вот, вроде изложил все свои нынешние знания по настройке Xdebug. Можете добавлять страницу в закладки — будет отличной шпаргалкой на будущее! Если есть вопросы — задавайте. Если кому-то поможет моя статья можете оставить «Спасибо» в качестве фидбека.

Источник

Adblock
detector