воскресенье, 26 октября 2008 г.

XDebug + PDT на LAMPP (XAMPP)

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

Для разработки PHP-приложений я использую XAMPP на работе и дома. Конечно на Линукс можно поставить LAMP с помощью одной команды в консоли, но я привык к XAMPP на Windows и теперь использую его версию для Linux - LAMPP. Поскольку я решил полностью отказаться от проприетарного софта, я заменил Zend Studio на PDT - среду разработки для PHP на основе Eclipse, а Zend Debugger на XDebug.






1. Скачиваем XAMPP и устанавливаем его:

sudo tar xvfz xampp-linux-1.6.8a.tar.gz -C /opt


Скачаем и установим Development package. Он нам понадобится при компиляции модуля xdebug. Устанавливается он так же как и собственно XAMPP:


sudo tar xvfz xampp-linux-devel-1.6.8a.tar.gz -C /opt


Чтобы запустить LAMPP, выполним команду:


sudo /opt/lampp/lampp start



2. Скачиваем PDT с официального сайта eclipse.org/pdt. Я скачал версию All-in-one, т.е. полностью Эклипс с необходимыми плагинами. Чтобы запустить PDT, его нужно просто распаковать (например в папку /opt) и запустить /opt/eclipse/eclipse.

Однако тут я столкнулся с трудностью. PDT отказался запускаться наотрез. Немного погуглив, я понял, что он не запускается, потому что у меня 64-битная система, а PDT - 32-битный. В таком случае нужно установить 32-битный JDK и попросить PDT использовать именно этот JDK.


Устаналиваем Джаву:


sudo apt-get install ia32-sun-java6-bin


После установки может оказаться, что 32-битная виртуальная машина стала виртуальной машиной Java по умолчанию. Но мы же не для того ставили 64-битную систему, чтобы использовать на ней 32-битное ПО. Исправляется следующим образом:


sudo update-alternatives --config java


Чтобы PDT использовал нужную версию Java, напишем скрипт для запуска Eclipse eclispe.sh



[sourcecode language='php']
#! /bin/sh
PATH=/usr/lib/jvm/ia32-java-1.5.0-sun/bin:$PATH
/opt/eclipse/eclipse
[/sourcecode]

Чтобы скрипт можно было запускать, нужно установить права таким образом

chmod 0755 eclipse.sh

3. Скачиваем исходники XDebug со страницы http://www.xdebug.org/




Теперь начинается самое интересное - нам нужно скомпилировать php-модуль из исходников. Распакуем архив с исходниками и перейдем в папку, куда они были распакованы. Для компиляции нужно выполнить следующие команды



[sourcecode language='php']
/opt/lampp/bin/phpize
./configure --enable-xdebug --with-php-config=/opt/lampp/bin/php-config
make
[/sourcecode]

Если команда phpize вернула что-то типа:


Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.

то необходимо установить программу autoconf:


[sourcecode language='php']
sudo aptitide install autoconf
[/sourcecode]

Скопируем полученный модуль в папку PHP-расширений XAMPP



sudo cp modules/xdebug.so /opt/lampp/lib/php/extensions

И тут я опять столкнулся с проблемой. При запуске XAMPP ругался на модуль xdebug.so. Оказалось, что модуль скомпилированный в 64-битной системе не работет с 32-битным PHP. Я не придумал ничего лучшего, как скомпилировать модуль на 32-битной системе. У меня как раз была виртуальная машина с Ubuntu 8.10beta i386, и я в этой системе успешно скомпилировал модуль и положил его в папку /opt/lampp/lib/php/extensions.

4. Правим php.ini


Добавим следующую строчку в раздел [PHP] файла /opt/lampp/etc/php.ini


zend_extension=/opt/lampp/lib/php/extensions/xdebug.so


А в конец файла добавим новый раздел [xdebug]



[sourcecode language='php']
[xdebug]
xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
zend_extension_ts="/opt/lampp/lib/php/extensions/xdebug.so"
[/sourcecode]

5. Перезапускаем XAMPP


sudo /opt/lampp/lampp restart


6. Вот собстенно и все, можно дебажить :)


Как дебажить, я описывать не буду. По ссылкам, которые я указал ниже, можно найти подробные инструкции со скриншотами.


По моим субъективным ощущениям могу сказать, что xdebug значительно быстрее zend'а. Говорят, что в Зенде тормозит профайлер, но в свое время у меня без профайлера его запустить не получалось.


А что же в Windows?


А в Windows все почти так же, только компилировать ничего не надо. На сайте xdebug доступен уже скомпилированный dll для Windows, который надо положить в папки xampp/php/ext и xampp/php/extensions. Еще обратите внимание, что php.ini находится в странном месте xampp/apache/bin/php.ini. Если вы пользуетесь php-switch для переключения версий php, советую найти все файлы php*.ini в папках xampp и внести правки.


Источники:



Комментариев нет:

Отправить комментарий