Настойка PDT в Eclipse для написания и отладки PHP скриптов и страниц.

PDT плагин для Eclipse и отладка XDebug, или Zend Debugger

PDT (PHP Development Tools) плагин, после установки в Eclipse, предоставляет возможность быстрого написания и отладки PHP скриптов и страниц. Проект  PDT  поддерживает две утилиты для отладки: XDebug и Zend Debugger.

В данной статье отображен процесс настройки PDT для отладки используя обе утилиты отладки.

PDT V1.0 был опубликован в сентябре 2007 года. Утилита работает с платформой Веб-разработки (Web Tools
Platform  — WTP) для предоставления возможности построения PHP проектов и PHP файлов посредством Eclipse. Проект PDT может использоваться если вы уже установили Eclipse для JavaTM разработки — используя PHP перспективу или PHP
Debugging перспективу. Редактор PHP умеет подсвечивать код, форматировать код, проводить проверку синтаксиса и предоставляет возможность использования заготовок (templates). Используя PDT, есть возможность запуска и отладки PHP скриптов как локально, так и на web-сервере.

Для отладки PHP скриптов не обязательно настраивать оба отладчика (XDebug и Zend Debugger by Zend Software), Вы можете выбрать и использовать только один из них. После установки одного из отладчиков, у Вас появиться возможность отладки любого PHP скрипта. При помощи  перспективы PHP Debug, есть возможность просмотра переменных и пошагового прохождения кода по точкам прерывания размещенных в коде. Приступим.

Для настройки среды отладки PHP скриптов и сайтов в Eclipse требуется:

  1. Операционная система. Благо есть версии Eclipse  для Linux, Windows и Mac OS (в данном руководстве будет рассматриваться Linux, а позднее напишу под Windows);
  2. Веб-сервер. Может быть любой, если он поддерживает PHP для работы сайтов (Apache, IIS);
  3. Установленный PHP c настройками отладчика(xdebug, или Zend Debugger);
  4. Сайт на данном веб-сервере, с непосредственным доступом к директории фалов сайта;
  5. И сам PDT;

Варианты установки PDT для Eclipse:

  1. Установка «Все в одном» («All-in-One»). Данный тип установки в данной теме рассматриваться не будет. Он включает в себя саму платформу Eclipse, PDT плагин и др.;
  2. Установка «Автоматическая». Данная установка осуществляется посредством утилиты установки дополнительного программного обеспечения Eclipse;
  3. Установка «Ручная». Этот тип установки не рекомендуется из-за потребности в личном контроле зависимостей PDT плагина;

Варианты отладки PHP для Eclipse:

  1. Отладка PHP скриптов.Для данного варианта веб-сервер не нужен, а необходим настроенный для отладки CLI-PHP.
  2. Отладка PHP сайтов. Для данного варианта необходим веб-сервер с настроенным для отладки php ядром.
  3. Оба варианта отладки. Включает потребности и первого, и второго вариантов отладки.

Было решено использовать второй вариант установки PDT в Eclipse.

Автоматическая установка PDT в Eclipse:

  1. Выполнить команду Help->Install New Software;
    help-install
  2. Выбрать из возможных или добавить  сайт для обновления Eclipse (в моем случае: http://download.eclipse.org/releases/helios/);
  3. Выбрать из списка Eclipse PDT;
    select-pdt
    pdt-install-tools-view
  4. На следующем этапе соглашаемся с лицензионным соглашением Eclipse;
    eclipse-pdt-license
  5. Закончить установку и перезагрузить Eclipse;
  6. Выполнить команду Window->Open Perspective;
    open-perspective-menu
  7. Выбрать PHP перспективу;
    open-perspective-php
  8. Можно создавать PHP проект;

Установка Apache на локальную машину (Ubuntu)

Подробное руководство о установке Apache можно найти на официальном сайте http://httpd.apache.org, или я опишу по отдельным просьбам.

В моем случае на Ubuntu установка заключалась в:

$ sudo aptitude install apache2

Далее устанавливаем модуль Apache «mod_userdir». Он предоставляет возможность для каждого пользователя системы создать каталог в домашней директории, к которому можно обратиться по адресу «http://localhost/~username«.

Можно обойтись и без этого, но ,по-моему, так удобней работать.

$ sudo a2enmod userdir
 
$ cd /etc/apache/mods-enabled/
 
$ sudo nano userdir.conf

Должен быть такой код:

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root
 
        <Directory /home/*/public_html>
                #AllowOverride FileInfo AuthConfig Limit Indexes
                suPHP_Engine on
                AllowOverride All
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec FollowSymLinks
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

Создаем директорию public_html в домашней директории и настроим права на группу службы apache (www-data):

$ mkdir ~/public_html
 
$ sudo chgrp www-data ~/public_html

Перезапуск Apache:
$ sudo /etc/init.d/apache2 restart

Установка и настройка PHP с Apache2

Существует несколько вариантов на данном этапе:

  1. Установка модуля apache — suPHP (рассматривается в данной статье);
  2. Установка полноценного PHP;

Выберете один из вариантов.

1. Установка suPHP в apache2:

В данном примере, пару строк ранее, должна была появиться ошибка при перезагрузке apache. Ошибка возникла если suPHP не настроен на вашем компьютере.

Установка suPHP:

$ sudo aptitude install libapache2-mod-suphp

Перезапуск Apache:
$ sudo /etc/init.d/apache2 restart

Можете переходить к пункту проверки работоспособности php страниц в public_html.

2. Установка PHP 5 в Ubuntu

Самый «тяжелый» процесс)):

$ sudo aptitude install php5

Перезапуск Apache:
$ sudo /etc/init.d/apache2 restart
Проверка работоспособности php страниц в public_html
Создаем файл с именем index.php по пути "~/public_html" :
[codesyntax]
$ echo '<?php phpinfo(); ?>' > ~/public_html/index.php

И в Вашем любимом обозревателе интернет следуем по адресу "http://localhost/~username", где username - имя Вашего пользователя.

Если наблюдаем здоровенный список с параметрами php, все работает. В противном случае жду комментариев.

Настройка файла конфигурации PHP (php.ini) для загрузки расширения xdebug

1. В случае использования suPHP.

Создадим файл .htaccess в ~/public_html c таким содержанием:

suPHP_ConfigPath /path/to/phpini_folder

Создадим php.ini файл в ~/public_html:
$ touch /path/to/phpini_folder/php.ini

Где /path/to/phpini_folder каталог где находиться php.ini (файл конфигурации PHP)

Теперь зайдем в обозревателе на страницу "http://localhost/~username". Если в пункте "Loaded Configuration File" отображен наш php.ini приступаем к пункту настройки xdebug.

2. В случае использования установленного PHP.

Найдем файл настройки PHP. Зайдем в обозревателе на страницу "http://localhost/~username". В пункте "Loaded Configuration File" должен быть отображен путь к действующему файлу конфигурации php.ini. Запоминаем путь и переходим к этапу настройки xdebug.

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

Перед самой настройкой xdebug его следует раздобыть :).

Я опишу два способа:

  1. Собрать самостоятельно;
  2. Установить используя PECL ( PHP Extension Community Library);

"1. Собрать самостоятельно":

Скачать с официального сайта исходники - http://xdebug.org/files/xdebug-2.1.0.tgz (в моем случае):

$ wget http://xdebug.org/files/xdebug-2.1.0.tgz

Разархивируем:
$ tar -xvf xdebug-2.1.0.tgz

Предварительно установим пакеты php5-dev и make, которые необходимы для компиляции дополнительных модулей (в нашем случае xdebug).
$ sudo aptitude install php5-dev make

Приступим к сборке xdebug:
$ cd xdebug-2.1.0
$ ./configure
$ make

Копируем созданный xdebug.so из каталога modules в удобную для Вас директорию. В моем случае:
$ sudo cp modules/xdebug.so  /usr/lib/php5/20090626+lfs/xdebug.so

Переходим  к пункту редактирования php.ini.

"2. Установить используя PECL ( PHP Extension Community Library)":

Установим пакеты php5-dev, make и php-pear, которые понадобятся нам для сборки xdebug используя PECL:

$ sudo aptitude install php5-dev make php-pear

Приступим к установке xdebug:
$ sudo pecl install xdebug

После окончания установки, находим строку на подобие этой -> Installing '/usr/lib/php5/20090626+lfs/xdebug.so'

Запоминаем путь и переходим к пункту редактирования php.ini.

Редактирование php.ini

Как Вы помните, на странице "http://localhost/~username" в пункте "Loaded Configuration File" отображен путь к загруженному файлу конфигураций php.ini.

Вот его мы и будем редактировать.

В моем случае:

$ nano /path/to/phpini_folder/php.ini

И добавляем в него строки вида:
zend_extension = /usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
 
Перезапуск Apache:

$ sudo /etc/init.d/apache2 restart

Следуем на страницу "http://localhost/~username" и ищем строку "xdebug".

В случае положительного результата поиска, я Вас поздравляю. Итак, настройка xdebug завершена и можно приступать к настройке Eclipse для отладки с использованием Apache , PHP и xdebug.

Настройка Eclipse для отладки с использованием XDebug

Первым делом запускаем Eclipse, в котором уже должен быть установлен PDT.

Создаем новый PHP проект.

new-test-php-project

Важно выбрать каталог для проекта в ранее созданном ~/public_html/. Добавим пару файлов в проект с вызовом директивы require() и т.п., чтобы увидеть основные плюсы отладки таким способом.

Теперь необходимо рассказать PDT и Eclipse где находиться наш сервер. Следуем в "Window"->"Preferences":

eclipse-preference

Пункт "PHP"->"Debug". Выбираем отладчик (PHP Debugger) xdebug. Здесь можно изменить настройки отладчика. По умолчанию, все настроено так как мы указали в файле php.ini.

eclipse-Preferences-php-debug

Выбираем пункт настройки Серверов (PHP Servers...):

preferences-php-servers

Выполняем команду Редактировать (Edit):

server-Edit Server

Вводим имя сервера и путь к корневому каталогу сервера http://localhost/~username/. Выбираем пункт "Path Mapping"

path-mapping-Edit Server

Выбираем пункт Добавить (Add). В поле "Path on Server" вводим имя папки проекта на сервере (в моем случае testPHP). В поле "Path in Workspace" указываем путь к проекту в рабочем пространстве Eclipse (тоже testPHP).

path-mapping

Жмем "Ок".

В разделе "Window"->"Preferences"->"PHP"->"Debug" можем указать путь к исполняемому файлу php для отладки скриптов php. Для данной возможности необходимо выполнить пункт установки PHP.

В разделе "Run"->"Debug Configuretion..."

Debug-configurationsВносим настройки соответственно файлу, с которого следует начинать отладку. Сохраняем настройки и жмем "F11"(Dubug).

Должен появиться запрос о переходе на перспективу "PHP debug". В противном случае необходимо перейти самостоятельно.

debug-processОсновные функциональные возможности, во время отладки в Eclipse, не входят в данную тему и более подробно могут быть описать по просьбам трудящихся:-).

Послесловие

На Zend Debugger меня не хватило ;), постараюсь описать позднее. Уверяю, что установка Zend Debuggera не сложнее описанного выше варианта Xdebug.

Есть и другие варианты установки и настройки eclipse, apache, php, xdebug и др. На "Эталон правильной настройки" данная статья не претендует. Скорее всего буду варианты ошибок на протяжении этого процесса. Я буду рад помочь и выслушать любую конструктивную критику :-).

Описать процесс установки Eclipse, PDT, Apache, PHP, Xdebug в Windows не хватает времени. Возможно, позднее, если раньше никто не попросит).

Настойка PDT в Eclipse для написания и отладки PHP скриптов и страниц.: 7 комментариев

    • Слышал, но не пробовал :) Я решил начать с Eclipse, т.к. нужно AS3, PHP и, в перспективе, Java. Как я знаю, то IDE для Flash в Linux — это только Eclipse. Кстати, хорошее предложение разобраться с Netbeans, но позже.

    • Как ни крути, а возможностей у Eclipse больше. Дело вкуса и потребностей. Если нужна командная разработка с контролем версий приложения — Eclipse Всем в руки и только побед. Я учу Eclipse из-за кроссплатформенности, легкой расширяемости и перспективности. Как говорят :»На вкус и цвет все фломастеры разные.» Никоим образом не хочу подчеркивать какой продукт круче, т.к. это личное дело каждого.

  1. Не работает. И в случае запуска через Command Line (/usr/bin/php5) и в случае Web Page (localhost).

    Через Command line никак не реагирует (не останавливается на первой строке (Break at first line) и игнорирует точки останова.

    В браузере воспринимает php скрипт с переменными
    (в адресной строке: index.php?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=13179914943023) как файл для загрузки (т.е. не обрабатывает как скрипт, а предлагает загрузить).

    Сделал все настройки xdebug:
    php.ini

    ;[xdebug] zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
    xdebug.remote_enable=On
    xdebug.remote_host="localhost"
    xdebug.remote_port=9000
    xdebug.remote_handler="dbgp"
    xdebug.remote_connect_back=On
    xdebug.default_enable = On

    В eclipse настроил согдасно инструкциям к PDT 2.0 (Zend Debugger — 10000 port, xdebug — 9000 port)

    в phpinfo() секция xdebug — отображает все параматры, в частности:

    xdebug.remote_enable On On
    xdebug.remote_handler dbgp dbgp
    xdebug.remote_host localhost localhost
    xdebug.remote_log /var/log/xdebug.log /var/log/xdebug.log
    xdebug.remote_mode req req
    xdebug.remote_port 9000 9000
    xdebug.scream Off Off

    php -i, php -m также говорят о работоспособности xdebug.

    В чем может быть проблема?

    • К сожалению, не было возможности ответить. Рад, что все заработало=)
      Если Вас не затруднит, опишите из-за чего была проблема и каким образом ее решили.
      Надеюсь, это поможет «следующим поколениям»:-)

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

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