среда, 8 августа 2012 г.

Настройка xDebug/php 5.4.0, Eclipse 4.2, Windows 7 x64

Настройка xDebug/php 5.4.0, Eclipse 4.2, Windows 7 x64

Использованы источники:

http://xdebug.org/download.php - компоненты xDebug
http://habrahabr.ru/post/31505/ - пример установки на устаревших компонентах (но всё равно)
http://stackoverflow.com/questions/2374567/eclipse-xdebug-session-never-completes - решение сообщения о невозможности подключения к xDebug. (нужно убрать кавычки в путях к dll xDebug).



Вводная.

На компьютере установлены 2 сервера Apache. Один на порту 8080 (для разработки), другой на 8081 (Zend). Настраивать буду на 8080. Абсолютный путь к 8080 стандартный:
   C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs
Путь к PHP такой:
   E:\php\php-5.4.0-Win32-VC9-x86
Предполагается, что Eclipse (Eclipse IDE for Java Developers) и PDT-plugin установлены.

Итак:

1. Скачиваем необходимую ddl (я выбрал "потокоопасную") с сайта xDebug в каталог !PHP!\ext
2.  Прописываем в !PHP!\php.ini следующие параметры:

zend_extension=E:\php\php-5.4.0-Win32-VC9-x86\ext\php_xdebug-2.2.1-5.4-vc9.dll
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
Пояснения к этим настройкам: путь в zend_extension пишется !!!без кавычек!!!, remote_host="localhost" и никакие настройки apache, что он висит на порту 8080 здесь присутствовать не должны.

3. Перезапускаем соответствующий Apache (на 8080).
4. Теперь надо настроить Eclipse.
Создадим проект PHP: File->New->PHP project... Путь к файлам project будет "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\test\", название проекта xDebug. Добавим в проект файл test01 с содержимым:

$x=0;
for($x=0;$x<=10;$x++)
{
    echo "x=$x";
}
Настроить Eclipse на использование xDebug и прописав порт apache:


Теперь правильно настроить сам xDebugger и прописать путь к отлаживаемому файлу:


и запускаем этот файл на отладку:


Результат:


Результат достигнут. Останов на первой строке и список переменных.

<<<!!! Дописать, как собрать xDebug из исходников под linux !!!>>>

Теперь следующая задача. А как это работает через сеть? По-настоящему на другом компе, а не на локальном? Кажется, что всё должно быть очевидно. Параметры в php.ini должны быть теми же:

zend_extension=E:\php\php-5.4.0-Win32-VC9-x86\ext\php_xdebug-2.2.1-5.4-vc9.dll
xdebug.remote_enable=On
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
 Но вот незадача. Не работает с этими параметрами. Читаем страницу с описанием параметра remote_enable. Там написано, что при включении этого параметра значение параметра remote_host не имеет значения. Оказывается, что это нетак. Пошёл на риск и прописал в remote_host другой параметр - имя машины, откуда я провожу отладку w142721. После перезапуска apache  стало возможным отлаживать php удалённо!

Дополнительно:
 Найдите ошибки в PHP-приложениях,

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