Настройки xdebug в php ini

Установка и настройка xdebug с phpstorm и vagrant

Будет кратко описана установка xdebug, настройка php.ini и phpstorm, а также использование xDebug на linux в связке с phpstorm и vagrant.

Установка xDebug

Ставим xdegub на виртуальную машину, предварительно подключившись к ней по ssh через vagrant ( vagrant ssh ). Команда для установки xdebug:

При установленном xdеbug информация о нём будет присутствовать в php.ini, проверим, так ли это:

Настройка xDebug php.ini

Host, port и идентификационный номер нужно прописать одинаковые и в настройках php.ini, и в настройках phpstorm.

Конфиг /etc/php5/cli/conf.d/20-xdebug.ini инклудится в php.ini. Поэтому добавляем в этот файл следующие настройки для xdebug (они будут задействованя как для php cli так и для fpm):

Настройка xDebug phpstorm

Servers» src=»http://jeka.by/upload/userfiles/1/images/xdebug-phpstorm-servers.jpg» style=»width: 687px; height: 604px;» />

Настраиваем DBGp proxy

Тут всё должно быть понятно, указываем IDE key и Port такие же, как задали в php.ini. В качестве Host указываем ip виртуальной машины, тот что в файле Vagrantfile.

Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

Использование xDebug c PHPStorm

В IDE PHStorm выставляем breakpoints, кликая возле строчек кода. Далее дебаггер будет делать остановку на этих точках.

Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

То же самое c xDebug для cli.

Выполнение cli-скрипта без xDebug:

Выполнение cli-скрипта с xDebug. Нужно передавать ENV-параметр PHP_IDE_CONFIG :

В нижней части IDE PHPStorm открывается дебаггер, где видны значения всех переменных, а также, что наиболее важно, цепочки вызов с возможностью перехода к каждому вызову.

Источник

Configure Xdebug

Download Xdebug

Download the Xdebug extension compatible with your PHP version and install it as described in the installation guide.

Xdebug 3 brings performance improvements, simplified configuration, and PHP 8 support. To learn more on upgrading to Xdebug 3, see the Upgrade guide.

If you are using an AMP package, the Xdebug extension may be already installed. Refer to the instructions specific for your package.

Integrate Xdebug with the PHP interpreter

Open the active php.ini file in the editor:

To disable the Zend Debugger and Zend Optimizer tools, which block Xdebug, remove or comment out the following lines in the php.ini file:

To enable Xdebug, locate or create the [xdebug] section in the php.ini file and update it as follows:

» xdebug.remote_enable=1 xdebug.remote_host=127.0.0.1 xdebug.remote_port=» «

To enable multi-user debugging via Xdebug proxies, locate the xdebug.idekey setting and assign it a value of your choice. This value will be used to register your IDE on Xdebug proxy servers.

Save and close the php.ini file.

Verify Xdebug installation by doing any of the following:

In the command line, run the following command:

The output should list Xdebug among the installed extensions:

Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

Create a php file containing the following code:

Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

Configure Xdebug in PhpStorm

Check the Xdebug installation associated with the selected PHP interpreter:

The version of the selected PHP installation.

The name and version of the debugging engine associated with the selected PHP installation (Xdebug or Zend Debugger). If no debugger is configured, PhpStorm shows the corresponding message:

Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

Define the Xdebug behaviour. Click Debug under the PHP node. On the Debug page that opens, specify the following settings in the Xdebug area:

In the Debug port field, appoint the port through which the tool will communicate with PhpStorm.

This must be the same port number as specified in the php.ini file:

To have PhpStorm accept any incoming connections from Xdebug engine through the port specified in the Debug port field, select the Can accept external connections checkbox.

When this checkbox cleared, the debugger does not stop upon reaching and opening an unmapped file, the file is just processed, and no error messages are displayed.

Select the Force break at first line when a script is outside the project checkbox to have the debugger stop at the first line as soon as it reaches and opens a file outside the current project. With this checkbox cleared, the debugger continues upon opening a file outside the current project.

In the External connections area, specify how you want PhpStorm to treat connections received from hosts and through ports that are not registered as deployment server configurations.

Ignore external connections through unregistered server configurations : Select this checkbox to have PhpStorm ignore connections received from hosts and through ports that are not registered as deployment server configurations. When this checkbox is selected, PhpStorm does not attempt to create a deployment server configuration automatically.

Break at first line in PHP scripts : Select this checkbox to have the debugger stop as soon as connection between it and PhpStorm is established (instead of running automatically until the first breakpoint is reached). Alternatively turn on the Run | Break at first line in PHP scripts option from the main menu.

Max. simultaneous connections Use this spin box to limit the number of external connections that can be processed simultaneously.

By default, PhpStorm only listens for incoming IPv4 connections. To enable IPv6 support, you need to make adjustments in PhpStorm JVM options:

Select Help | Edit Custom VM Options from the main menu.

Configure Xdebug for using in the On-Demand mode

PhpStorm supports the On-Demand mode, where you can disable Xdebug for your global PHP installation and have it enabled automatically on demand only when you are debugging your command-line scripts or when you need code coverage reports. This lets your command line scripts (including Composer and unit tests) run much faster.

Disable Xdebug for command-line scripts:

file. Close all the dialogs and switch to the tab where the php.ini file is opened.

In the php.ini file, find the [xdebug] section and comment the following line in it by adding ; in preposition:

Configure Xdebug for using in the Just-In-Time mode

PhpStorm supports the use of Xdebug in the Just-In-Time (JIT) mode so it is not attached to your code all the time but connects to PhpStorm only when an error occurs or an exception is thrown. Depending on the Xdebug version used, this operation mode is toggled through the following settings:

The mode is available both for debugging command-line scripts and for web server debugging.

Depending on whether you are going to debug command-line scripts or use a Web server, use one of the scenarios below.

Command-line scripts

For Xdebug 2, type xdebug.remote_mode in the Configuration directive field and jit in the Value field.

For Xdebug 3, type xdebug.start_upon_error in the Configuration directive field and yes in the Value field.

Web server debugging

In the Validate Remote Environment that opens, choose the Web server to validate the debugger on.

Choose Local Web Server or Shared Folder to check a debugger associated with a local Web server.

    Choose Remote Web Server to check a debugger associated with a remote server.

      Deployment Server : In this field, specify the server access configuration of the type Local Server or Remote Server to access the target environment. For details, see Configure synchronization with a Web server.

      Click Validate to have PhpStorm create a validation script, deploy it to the target remote environment, and run it there.

      Open the php.ini file which is reported as loaded and associated with Xdebug.

      In the php.ini file, find the [xdebug] section.

      Configure Xdebug running in a Docker container

      Источник

      Настройка отладки php-кода при помощи Xdebug

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Классические методы отладки на PHP — использование функций error_log, print_r и var_dump. Их проблема в том, что они не помогают отслеживать сам процесс работы кода. Однако с этой задачей справляется Xdebug — один из самых популярных инструментов среди PHP-разработчиков, которые хотят работать, а не страдать.

      В этой статье будет рассмотрена отладка PHP с помощью связки Xdebug и VSCode. Если вы пользуетесь PHPStorm, то проблем тоже не будет — настройка выполняется даже проще и быстрее.

      Возможности Xdebug

      Xdebug — это расширение для PHP, которое позволяет использовать удаленный отладчик в IDE через брейк-пойнты. С его помощью вы можете отслеживать значения переменных. Как итог — ошибки в коде обнаруживаются быстрее, чем при использовании error_log, print_r и var_dump.

      Еще одна полезная функция — трассировка стека. Она выводит подробный путь, который привел приложение к ошибке. Он содержит параметры, переданные в функцию. Xdebug также можно использовать как профайлер для поиска узких мест кода. Если добавить внешние инструменты, то получится визуализировать графики производительности. Например, можно использовать WebGrind — набор PHP-скриптов для удобного вывода статистики прямо в браузере.

      Кроме того, с помощью Xdebug вы можете проследить, какая часть кода выполняется в процессе запроса. Это дает информацию о том, как хорошо код покрыт тестами.

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

      Для работы Xdebug PHP должен быть в режиме CGI. Посмотрим на примере хостинга Timeweb, как его включить.

      Подключаемся к серверу через SSH. Можно использовать консоль в панели управления Timeweb.

      Переходим в папку cd-bin сайта:

      Создаем символическую ссылку командой:

      Остаемся в директории cgi-bin и копируем файл php.ini:

      Теперь мы можем управлять параметрами PHP директивами в файле php.ini. Он находится в папке cgi-bin. Открываем его и вставляем в конце следующие строки:

      Если указанный порт занят, укажите другой. Можно использовать стандартный для Xdebug — 9000. В качестве idekey я указал VSCODE. Если будете настраивать конфигурацию для PHPStorm, впишите его.

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Чтобы проверить, работает ли Xdebug, создадим в корне сайта файл Myfile.php со следующим содержимым:

      Открываем файл в браузере и проверяем, что все параметры указаны верно.

      Организация удаленного подключения

      Чтобы выполнять PHP Debug на локальной машине, нужно настроить связь IDE и сервера через SSH-туннель.

      На Linux все выполняется парой команд.

      Приватный ключ сохраняется на локальной машине, а публичный добавляется на сервер. Подробнее об этом, а также о настройке SSH на Windows, вы можете узнать из этой статьи.

      На Linux туннель создается командой:

      На Windows туннель настраивается через утилиту PuTTY.

      Сессия сохранится под тем именем, которое мы указали в разделе Session. В дальнейшем нужно будет просто запускать ее заново.

      Настройка VSCode

      Чтобы работать с Xdebug в VSCode, установим два расширения: Sync-Rsync и PHP Debug. Первое нужно для работы с удаленным сервером, второе — для отладки скриптов.

      После установки расширений создаем на локальной машине пустую папку и открываем ее через VSCode: «Файл» — «Открыть папку».

      Путь /home/user/.ssh/id_rsa — это место, где лежит файл с закрытой частью SSH-ключа.

      После сохранения файла settings.json нажимаем в VSCode F1, выполняем команду Sync Remote to Local. В локальную папку, указанную в настройках, скопируются все файлы с сервера.

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      На этом настройка IDE завершена. Можно приступать к тестированию кода.

      Debug кода

      Мы настроили среду, теперь разберемся, как пользоваться Xdebug.

      Переходим в режим «Отладка» и проверяем, что выделен пункт Listen for XDebug. Нажимаем на зеленый треугольник или на клавишу F5.

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

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Профилирование с визуализацией результатов

      Чтобы использовать Xdebug profiler на полную мощность, установим WebGrind. Это набор скриптов, который выводит статистику в браузере. С его помощью можно посмотреть список вызванных функций, количество вызовов, общее затраченное время на вызов и выполнение.

      Затем нужно открыть файл config.php, который находится в распакованной папке webgrind-master. В нем отредактируем две строки:

      После такой настройки можно выполнять на Xdebug профилирование. Открываем наш тестовый скрипт в браузере. Затем переходим по ссылке www.domain/webgrind-master. В выпадающем списке выбираем только что запущенный скрипт и нажимаем на кнопку Update.

      Функции можно скрывать или раскрывать, чтобы посмотреть развернутую статистику. Инструмент также умеет отображать графы вызова функций — для этого используется режим Show Call Graph.

      Вывод: когда использовать Xdebug?

      Xdebug существенно упрощает отладку PHP-кода. Конечно, если ваш текущий инструментарий удовлетворяет все потребности в поиске багов, то устанавливать дополнительное расширение смысла нет. Но, как показывает практика, без Xdebug сложно провести правильное модульное тестирование или отладку через удаленные брейк-пойнты с возможностью пошаговой проверки кода.

      Источник

      Настройка Xdebug в PhpStorm

      Настройка Xdebug в PhpStorm

      1. Отладка на локальном компьютере

      Все настройки будут показаны на примере Ubuntu и интерпретатора PHP, настроенного вместе с Apache. Для других конфигураций пути к файлам могут отличаться, но суть останется та же. Давайте разберемся как это будет работать. Отладчик Xdebug позволяет приостанавливать выполнение кода, смотреть стек вызовов и содержимое переменных. Однако удобного интерфейса управления у него нет. Поэтому для управления отладкой будем использовать IDE. Но IDE не может никак сообщить отладчику что надо запустить отладку, потому что она отвечает только за код. Для этого понадобится ещё расширение для браузера Debug Helper, с помощью которого вы сможете включить режим отладки.

      Сначала необходимо установить Xdebug. Для этого выполните:

      sudo apt install xdebug

      После завершения установки Xdebug надо настроить программу так, чтобы при запуске сеанса отладки она пыталась подключится к нашей IDE для управления отладкой. Для этого добавьте такие строчки в файл /etc/php/7.4/apache2/conf.d/20-xdebug.ini в версии Xdebug 2:

      sudo vi /etc/php/7.4/apache2/conf.d/20-xdebug.ini

      zend_extension=xdebug.so
      xdebug.remote_enable=1
      xdebug.remote_host=127.0.0.1
      xdebug.remote_connect_back=1
      xdebug.remote_port=9000
      xdebug.remote_handler=dbgp
      xdebug.remote_mode=req
      xdebug.remote_autostart=false

      Для новой версии Xdebug 3 старая конфигурация тоже будет работать, но лучше использовать новый стандарт:

      xdebug.mode=debug
      xdebug.start_with_request=trigger
      xdebug.discover_client_host = false
      xdebug.client_host = 127.0.0.1
      xdebug.client_port = 9000

      Если необходимо, вы можете включить несколько режимов, перечислив их через запятую. Вторая строчка xdebug.start_with_request определяет как будет запускаться отладчик для режимов debug, trace и им подобных:

      Если третья строка xdebug.discover_client_host имеет значение true, то xdebug пытается подключится к хосту, переданному в заголовке HTTP_X_FORWARDED_FOR. Но так как хост указывается в следующей строке, в данном случае эта возможность не нужна. Дальше указывается хост клиента, куда надо подключится для управления отладкой 127.0.0.1 и порт 9000. Именно этот порт используется в PhpStorm по умолчанию на данный момент. После сохранения настроек перезапустите Apache:

      sudo systemctl restart apache2

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Нажмите кнопку + и в открывшемся списке выберите PHP Remote Debugger:

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      В настройках можно ничего не менять, укажите только имя этого способа отладки. Если сервер, с которого будут ожидаться подключения не задать, то будут приниматься все подключения.

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

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

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Дальше осталось настроить браузер. Для Chrome можно скачать это расширение. Установите его и откройте страницу, которую надо отлаживать. Кликните по значку расширения и выберите Debug. Значок расширения станет зеленым:

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Обновите страницу и возвращайтесь к PHPStorm. Если всё было сделано верно, там запустится сеанс отладки. При первом запуске программа может попросить настроить соответствия локальных путей к файлам с удаленными. Для локального сервера здесь ничего настраивать не надо, достаточно нажать Accept:

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Дальше отладчик остановит выполнение на выбранной точке останова и в программе появится интерфейс отладки:

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Как видите всё довольно просто. Дальше давайте разберемся как настроить Xdebug PhpStorm и Docker.

      2. Отладка Php в Docker

      C Docker возникает одна сложность. Поскольку отладчик должен сам подключится к IDE, необходимо пробросить хост в контейнер. В windows это можно сделать с помощью адреса host.docker.internal. Но в Linux, по умолчанию это не происходит. Для того чтобы добавить такой адрес надо добавить в docker-compose такие строчки:

      Давайте для этого примера будем использовать такую структуру директорий:

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Минимально необходимый docker-compose.yaml будет выглядеть вот так:

      Здесь объявляется два контейнера, nginx и php-fpm. В первый не надо вносить никакие изменения, поэтому можно просто брать официальный образ, монтировать папку с исходниками, конфигурационный файл и пробрасывать порт. Во второй контейнер надо установить и настроить Xdebug поэтому его придется собрать на основе официального контейнера php. Для этого же контейнера надо указать директиву extra_hosts, без неё ничего работать не будет. Конфигурация Nginx тоже вполне стандартная:

      FROM php:8.0.3-fpm-buster
      RUN pecl install xdebug \
      && docker-php-ext-enable xdebug
      COPY xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

      Здесь устанавливается xdebug с помощью pecl, а затем копируется его конфигурационный файл в контейнер. Вот этот конфигурационный файл:

      xdebug.mode=debug
      xdebug.start_with_request=trigger
      xdebug.discover_client_host = false
      xdebug.client_host = host.docker.internal
      xdebug.client_port = 9000

      В контейнере установлен Xdebug 3 для PHP 8, потому что старая версия с этой версией языка уже не работает, поэтому используется новый синтаксис конфигурации. Ну и хост, host.docker.internal, который раньше был прописан в docker-compose.yaml. Настройка xdebug PHPStorm docker завершена. Дальше вы можете запустить проект:

      Теперь, как и в предыдущем варианте вы можете включить в браузере режим отладки, обновить страницу и отладчик успешно подключится к IDE, не смотря на то, что он работает в Docker:

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini

      Выводы

      В этой статье мы рассмотрели как выполняется настройка xdebug PHPStorm на локальном компьютере и в Docker контейнере. Если всё сделать правильно отладчик будет работать и помогать вам искать ошибки в коде.

      Источник

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

      Настройки xdebug в php ini. Смотреть фото Настройки xdebug в php ini. Смотреть картинку Настройки xdebug в php ini. Картинка про Настройки xdebug в php ini. Фото Настройки xdebug в php ini
      Есть очень хороший инструмент для отладки 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

      Остальные параметры настраиваем под себя.

      Ну, а о том, как выполнять отладку — в другой раз.

      Источник

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *