Эта статья своего рода «шпаргалка» по правильной настройке Denwer и Eclipseдля комфортной разработки на языке PHP. Многие руководства по этому вопросу освещают его не полностью, отдельные же и вовсе неправильные. В статье будет рассказано о том как настроить Denwer для правильной работы с отладчиком XDebug, как настроить Eclipse PDT для удобной работы с проектами в Denwer'e, как настроить тот же отладчик в Eclipse. И еще маленький бонус в виде подсказки как быстро переключаться из режима отладки в чистый PHP.
СКАЧИВАЕМ ДИСТРИБУТИВЫ
1) Denwer (Джентельменский набор веб-разработчика) http://www.denwer.ru/
Скачиваем с главной страницы сайта базовый пакет Denwer. В данный момент это версия 3 на php 5.3.1.
Скачиваем дополнительные модули для PHP 5 (они пригодятся при сколько-нибудь серьезной разработке). http://www.denwer.ru/packages/php5.html
2) Xdebug (расширение для отладки в PHP).
Переходим на http://www.xdebug.org/download.php, там ищем последнюю стабильную версию Xdebug (для меня Xdebug 2.1.0 от 2010-06-29).
Далее в списке выбираем 5.3 VC6 (32 bit) – для PHP 5.3 под 32 разрядную ОС Windows. VC6 или VC9 можно узнать из phpinfo() установленного сервера. Получаем библиотеку с именем php_xdebug-2.1.0-5.3-vc6.dll
3) Eclipse PDT (Eclipse PHP Development Tools Project). http://www.eclipse.org/pdt/
Скачиваем последнюю версию, которую предлагает сайт. В качестве примера будем использовать Eclipse PDT 2.2.0 на платформе Helios (Eclipse 3.6), размер которого около 150 Мб.
УСТАНАВЛИВАЕМ DENWER
Установка Denwer это простая процедура и подробно описана на официальном сайте пакета. Сначала устанавливаем базовый пакет по стандартному пути C:/WebServers.
Далее запускаем установку дополнительных модулей. Это не является обязательным требованием, однако, как показывает практикая, это пригодится в дальнейшем. Устанавливаем в ту же директорию, куда только что установили базовый пакет.
УСТАНАВЛИВАЕМ XDEBUG
Для выполнения этого пункта нам будет достаточно скопировать полученную библиотеку php_xdebug-2.1.0-5.3-vc6.dll в папку C:\WebServers\usr\local\php5\ext\. В файл C:\WebServers\usr\local\php5\php.ini в самом конце нужно дописать:
Copy Source | Copy HTML
[xdebug]
zend_extension=\usr\local\php5\ext\php_xdebug-2.1.0-5.3-vc6.dll
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
Для того чтобы проверить как установился Xdebug запустим Denwer и посмотрим phpinfo(). Это можно сделать по ссылке на Ваш локальный сервер http://localhost/Tests/PHP5/index.php5. Если в тексте Вы видите то же самое что и на скриншоте ниже, то значит, что модуль xdebug установился:
Если подобного текста Вы найти не можете, то ошибка всего лишь в php.ini, больше ей быть негде. Часто причины неудачной установки — неверный выбор директорий, неправильно набранные пути (в зависимости от ОС) и просто ошибка в каком нибудь слове. Также у Вас могли остаться настройки от Zend Debugger — их нужно удалить или закомментировать (знаком «;» перед строкой). Комментировать нужно все переменные касающиеся zend debuuger, а именно zend_extension, zend_extension_ts, zend_debugger.allow_hosts, zend_debugger.expose_remotely. Не удаляйте те переменные, которые установили мы!
(ВНИМАНИЕ! в php 5.2 вместо zend_extension используется переменная zend_extension_ts, не перепутайте! показанный выше пример для php 5.3)
УСТАНАВЛИВАЕМ ECLIPSE
Загруженный с официального сайта Eclipse не нуждается в установке, его нужно просто распаковать в любое место на диске. Для запуска IDE выполните eclipse.exe в корневой директории Eclipse. Настроим Eclipse для работы с Denwer и Xdebug:
1) При первом запуске Eclipse будет предложено указать Workspace – рабочее пространство. Так как эту сборку Eclipse мы будем использовать только для разработки на PHP смело указываем путь как C:/WebServers/home/.
2) В запущенном Eclipse откроем меню Window->Preferences. Далее настраиваем отдельные свойства, не забывая нажимать Apply для сохранения изменений:
3) Настройка PHP->PHP Interpreter
PHP Version: PHP 5.3
4) Настройка PHP -> PHP Executables
Нажимаем Add
Name: любой (например PHP 5.3.1)
Executable path: C:\WebServers\usr\bin\php.exe
PHP debugger: Xdebug
В результате получаем:
5) Настройка PHP->Debug
PHP Debugger: XDebug (он должен быть уже настроен, если нет, то пропишите вручную указав порт 9000)
PHP Executable: имя которое вы задали в Executable path (PHP 5.3.1)
Снять флаг с Break at First Line
6) Настройка браузера для отладки по умолчанию
General-> Web Browser
Выбрать Use external web browser.
Выбираем браузер из предлагаемых, либо добавляем свой.
7) Перезагружаем Eclipse
8) Добавляем новый проект в корень Workspace, назовем его test.
Нажимаем Next.
Нажимаем Add Folder и добавляем в test папку www
Сохраняем проект. При этом будет создана физическая структура каталогов в папке веб-сервера.
9) Создаем в папке www PHP файл,
Добавим в него какой нибудь PHP код:
10) Перезапускаем Denwer. После этого созданный в Eclipse проект становится доступным как http://test/ (по названию проекта)
НАСТРОЙКА ОТЛАДКИ В ECLIPSE
Настраивать отладку придется для каждого проекта в отдельности. Для некоторых проектов потребуется более чем одна конфигурация отладки.
Порядок настройки отладки под конкретный проект:
1) Из меню Eclipse выбираем Run->Debug Configuration
Заходим PHP Web Page-> New…
При этом будет создана новая конфигурация отладки веб-страниц. Дадим ему осмысленное имя, соответствующее текущему проекту (например, Test Configuration). Четкие правила именования позволят избежать в дальнейшем путаницы с конфигурациями различных проектов.
2) Добавим наш созданный проект test как новый сервер:
PHP Server -> New
Задаем имя (test), и указываем URL для запуска веб-сайта http://test/
3) Нажимаем Next, и настраиваем соответствия путей на диске и в URL'е, так как это показано на рисунке:
4) Возвращаемся в окно настройки сервера и выбираем кнопку File->Browse, указываем наш index файл.
5) Убираем флажок Auto Generate, и вручную указываем путь, который должен запустить браузер. Настраивать придется вручную каждый раз, так как почти на всех сайтах используется ЧПУ, в том или ином виде, а его соответствия сложно объяснять Eclipse’у.
6) Настройка закончена. Теперь устанавливаем точки останова исполнения кода
7) И запускаем в отладчике.
Теперь наш созданный проект доступен в режиме отладки, и мы можем построчно исследовать весь код. На особенностях отладки в Eclipse я останавливаться не буду — в этом процессе нет каких-то тайн и непрозрачных процедур.
И ЕЩЕ МАЛЕНЬКИЙ БОНУС
Как известно отладчик сильно нагружает сервер, а ведь часто бывает так, что режим отладки не нужен долгое время. Самый надежный способ стабилизировать работу сервера — подключать режим отладки только тогда когда он нужен. Для этого достаточно изменять файл php.ini и перезагружать сервер. Расскажу как это можно сделать наиболее быстро и приятно:
1) Создаем две копии файла c:\WebServers1\usr\local\php5\php.ini, один из них оставим в том виде в котором мы его получили после добавления настроек отладчика и назовем его «php.ini xdebug». Из второго удалим все то что мы добавили за сегодняшний урок (все что идет в секции [xdebug]), и назовем его «php.ini clear». Итак мы получили две разные конфигурации php.ini, одна отладки другая для обычного режима работы.
2) Создаем файл c:\WebServers1\usr\local\php5\php.ini.bat со следующим содержанием:
Copy Source | Copy HTML
@echo off
if "%1"=="xdebug" goto xdebug
xcopy "c:\WebServers\usr\local\php5\php.ini clear" "c:\WebServers\usr\local\php5\php.ini" /Y
goto done
:xdebug
xcopy "c:\WebServers\usr\local\php5\php.ini xdebug" "c:\WebServers\usr\local\php5\php.ini" /Y
:done
call "C:\WebServers\denwer\Restart.exe"
Этот batch-файл подменяет php.ini файл и делает перезапуск сервера.
3) Выводим на Рабочий стол или иное удобное Вам место два ярлыка. Первый из них CLEAR с путем запуска C:\WebServers\usr\local\php5\php.ini.bat, второй — XDEBUG с путем запуска «C:\WebServers\usr\local\php5\php.ini.bat xdebug»
Теперь для того чтобы запустить сервер в одном из режимов будет достаточно запустить ярлык.
Легкого Вам дебага.
Спасибо за подробное описание! То что искал!
Сделал все как написано — не работает.
О, сори, все работает, оказывается скайп веб-порты забивает. Отключать его надо, перед запуском денвера. Спасибо!
Спасибо большое! Очень полезно. А то я уже просто выл от дебага Drupal с помощью принтов :)
Одно маленькое замечание по поводу настройки xdebug.
В статье дан следующий код:
[xdebug]
zend_extension=\usr\local\php5\ext\php_xdebug-2.1.0-5.3-vc6.dll
но на практике нунжо вместо zend_extension использовать zend_extension_ts так как zend_extension для unix, а _ts для винды:
[xdebug]
zend_extension_ts=D:\WebServers\usr\local\php5\ext\php_xdebug-2.1.0-5.2-vc6.dll
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
еще пришлось закомментировать zend debug, потому что вместе работать не хотело…
;Zend Debug
;zend_extension_ts=D:\WebServers\usr\local\php5\ZendDebugger.dll
;zend_debugger.allow_hosts=127.0.0.1,77.122.51.183
;zend_debugger.expose_remotely=always
Алмаз, с первым постом тебя! Горжусь и радуюсь, так держать!
Спасибо за комментарий, Дмитрий. Ваш пример он для PHP 5.2, тогда как в статье описывается версия 5.3. Однако я слегка изменил статью, и упомянул о разных названиях переменных в разных версиях php.
p.s. показанный пример (zend_extension, без _ts) работает на Win32.
Хорошая статья — из тех, которых мало, сам щас мучаюсь с этим вопросом
Очень классный сайт и пост. Однозначно сайт в закладки
Отличная новость! В общем как и сама страничка. Администратор, прекрасная работа.
Отлично, все работает! Огромное спасибо!
Все сделал как написано, ничего не работает, страница http://localhost/Tests/PHP5/index.php5 не выводится. В чем может быть причина?
иногда антивирус шалит, у меня MSE. поставил исключение для z:\usr\local\apache\bin\httpd.exe. помогло, все стало запускаться
Лучшее что я видел.
PS запихнул в проект wordpress, проект помечен крестом, запускается через раз.
Сделал все как написано, отладчик запускается, по строкам исследовать не могу, неактивны пункты меню отладчика, т.к. активно только Terminate ))
Что это может быть?
Перешел с Eclispe сначала на NetBeans, а потом на PHPStorm, и не жалею! Чего и Вам желаю!
PHPStorm можно использовать и бесплатно, юзайте EAP!
Спасибо большое) Очень полезная статья! Все работает отлично!
Спасибо большое) Очень полезная статья! Все работает отлично! + автору!
Отличная, статья! Мои 3-часовые истязания закончились на этом сайтею
Молодец, хорошие статьи (Антон был прав) — добавлю твой сайт к себе в избранное на взакаладке точка нет
Примите очередную благодарность за замечательный туториал.
Отличная инструкция, сколько всяких абы каких текстов перерыл, пока нашел, где все просто и главное без ошибок!
Заработало практически сразу.
Отличная статья. Особенно пригодился участок про создание сервера и задание путей. Спасибо!