Примечание от автора:
Я написал это руководство для тех, кто использует Apache 2 и PHP 5. Гарантию для других версий Apache и PHP я не даю. Но если вы успешно протестируете мою инструкцию на другом окружении — дайте мне знать и я подправлю это примечание. Кроме того, я проверял только в CentOS, но думаю для Debian тоже должно работать.
Проверяем, установлен ли xdebug
Если для отладки мы используем Netbeans, то на нашем удалённом сервере должен быть установлен xdebug. Чтобы это проверить, достаточно выполнить следующую команду:
php --info | grep "xdebug support"
Если на выходе вы получили
“xdebug support => enabled”, то необходимо лишь добавить немного кода в конец вашего
php.ini, поэтому вы можете пропустить следующий раздел и перейти сразу к
«Изменяем php.ini». Если же после выполнения команда ничего не вернула, либо вернула что-то вроде
“xdebug support => disabled”, то обязательно читайте следующий раздел.
Устанавливаем xdebug
До установки xdebug, нам сперва необходимо поставить некоторые другие пакеты. Вместо того, чтобы пересобирать все бинарники php с поддержкой xdebug, мы установим пакет
php-devel (
php5-dev для Debian), который позволит нам компилировать динамические расширения для PHP 5. Как раз таким расширением является xdebug. Утилиты
pecl,
pear и
phpize должны быть установлены с пакетом
php-devel, чего требует команда
pecl.
Для установки пакета
php-devel на системах Redhat, надо выполнить следующую команду:
yum install php-devel
Для установки пакета
php-devel (
php5-dev) на Debian, команда будет такой:
apt-get install php5-dev
Теперь давайте установим PEAR, который также включает PECL. Согласно их вебсайту, PECL — это репозиторий для расширений PHP, который предоставляет каталог всех известных расширений, а также услуги хостинга для скачивания и разработки PHP-расширений. Xdebug является одним из таких расширений.
Для установки пакета
php-pear на Redhat, выполним следующую команду:
yum install php-pear
Для установки пакета
php-pear на Debian, команда выглядит так:
apt-get install php-pear
Перед тем, как скомпилировать
xdebug при помощи PECL, нужно убедиться в том, что у нас установлены правильные компиляторы и пакеты. В Redhat используем для этого следующую команду:
install gcc gcc-c++ autoconf automake
А в Debian такую:
apt-get install gcc gcc-c++ autoconf automake
Обратите внимание на то, что некоторые из этих пакетов уже могут быть установлены. Если это так, то при необходимости такие пакеты будут обновлены.
Теперь мы можем установить/скомпилировать
xdebug, используя PECL. Выполним следующую команду:
pecl install Xdebug
Если команда вернёт ошибку
No releases available for package «pecl.php.net/Xdebug”, попробуйте обновить
pecl:
pecl channel-update pecl.php.net
Если всё прошло удачно, вы получите сообщение
Update of Channel „pecl.php.net“ succeeded. После этого можно повторить предыдущую команду ещё раз.
Изменяем php.ini
В системах Redhat, к которым принадлежит Centos, файл
php.ini скорее всего расположен здесь:
/etc/php.ini. В системах Debian, к которым относится Ubuntu, ваш файл
php.ini скорее всего будет здесь:
/etc/php5/apache2/php.ini
Добавим следующий код в конец
php.ini:
[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.remote_host=[ip address of local computer]
xdebug.remote_autostart=0
xdebug.idekey="netbeans-xdebug"
И не забудьте добавить IP адрес вашего локального компьютера и указать расположение файла
xdebug.so. Этот файл может быть расположен в различных директориях. Найти его можно следующей командой:
sudo find / -name xdebug.so
Перезапускаем Apache
После того, как вы изменили файл
php.ini, необходимо перезапустить Apache. В Centos это делается так:
service httpd restart
А в Ubuntu так:
service apache2 restart
Настраиваем NetBeans
Теперь в самом Netbeans нажимаем правой кнопкой на папке
Sources вашего текущего проекта и выбираем
Properties. Далее переходим в категорию
Run Configuration и убеждаемся в том, что
Project URL ведёт на ваш удалённый сервер.
После этого закрываем окно с настройками проекта и в главном меню выбираем
Tools и далее
Options. Нажимаем на иконку
PHP и переходим на вкладку
Debugging. Здесь проверяем, что
Debugger Port имеет значение “9000”, а
Session ID — “netbeans-xdebug”. Сохраняем настройки и закрываем окно.
Для начала отладки внутри NetBeans, нужно нажать на иконку
Debug Project, которая изображена на картинке ниже. И не забудьте сперва установить breakpoint в том файле, который вы хотите отлаживать.
После того, как вы запустили отладку, в браузере откроется новая страница с вашим index файлом. Чтобы убедиться в том, что отладка в данный момент работает, необходимо вернуться в NetBeans и проверить, что вы подключены к удалённому отладчику. В нижнем правом углу вашего экрана вы должны увидеть примерно такую картину:
Если строка состояния всё ещё показывает поиск соединения, то вы либо указали неверный порт, либо неверный IP адрес, либо xdebug установлен на вашем удалённом сервере некорректно, либо у вас работает firewall и блокирует указанный порт, либо какая-то другая программа уже заняла этот порт.
Когда вы убедились в том, что NetBeans подключился к xdebug, вы можете вернуться на вашу страницу, которую открыл NetBeans или же перейти прямо на страницу, которую хотите отладить. Вы можете спокойно открывать страницу в новой вкладке, так как куки и сессия были созданы при открытии первой страницы:
?XDEBUG_SESSION_START=netbeans-xdebug
Если вы создали breakpoint и открыли этот файл, то NetBeans непременно остановится на нём:
комментарии (1)