XDebug + PDT на LAMPP (XAMPP)

Воскресенье, Октябрь 26th, 2008

Сегодня я расскажу, как отлаживать 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


#! /bin/sh
PATH=/usr/lib/jvm/ia32-java-1.5.0-sun/bin:$PATH
/opt/eclipse/eclipse

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

chmod 0755 eclipse.sh

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

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


/opt/lampp/bin/phpize
./configure --enable-xdebug --with-php-config=/opt/lampp/bin/php-config
make

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

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

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


sudo aptitide install autoconf

Скопируем полученный модуль в папку 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]


[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"

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 и внести правки.

Источники:

No Responses so far »

Comment RSS · TrackBack URI ·

Say your words

You must be logged in to post a comment.