Realtime-отладка в PHP

Предыдущие сообщения
10 апреля 2011
#1 kanaris uid#1 В этой статье я расскажу, про отличный отладчик php-скриптов и как его установить, по шагам.

Рано или поздно, при разработке таких сложных скриптов, как боты или спамилки, программер сталкивается с необходимостью отслеживания выполнения своего скрипта по шагам и просмотр значений переменных на каждом шагу выполнения. Старые "дедовские" средства для вывода переменных в браузер, типа echo, print_r, var_dump не всегда помогают, например, в случае, если скрипт выдает данные постепенно, выведенные данные отображаются не сразу. Остается записывать в файл значения переменных, но это тоже не удобно. А когда скрипт сильно сложен или запутан, это ничего вообще не помогает. Слышал я также про плагин для лисы firePhp, но мне не понравилась реализация, хоть и отзывы хорошие на сайте разработчика. В поисках истины, я пришел к выводу, что отлаживать скрипты лучше всего в редакторе phpDesigner, если подключить отладчик xDebug. Если все правильно настроить, то отладка php превратится в одно удовольствие. Вся эта красота выглядит так:

Установка

Для начала нужно скачать последний редактор phpDesigner, например на торрентах здесь. Когда будете устанавливать, должен быть включен php & xdebug.

По умолчанию в phpDesigner есть встроенный интерпретатор php, естественно с его настройками, подключенными модулями. Здесь ничего солжного, установил и работай. Но если вы хотите, чтобы скрипт выполнялся через ВАШ интерпретатор php, который установлен у вас на локалхосте и подстроен под ваши нужды (с вашими настройками, папками и модулями), то необходимо выполнить некоторые настройки, с которыми я трахался дня два, пока не получилось. По шагам:
  1. Подберите и скачайте подходящий для вашей системы модуль xdebug на официальном сайте. Скопируйте этот файл (php_xdebug-2.1.0-5.3-vc6.dll, или какой у вас) в папку с расширениями php (к примеру c:\php\ext\)
  2. Скачайте WinCacheGrind (гуглим), скопируйте папку WinCacheGrind в c:\
  3. В php.ini в конец добавляем:
    [XDebug]
    ;; Only Zend OR ((( XDebug
    zend_extension = C:\php\ext\php_xdebug-2.1.0-5.3-vc6.dll
    xdebug.remote_enable=true
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
    xdebug.remote_handler=dbgp
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir="C:\Documents and Settings\All Users\Application Data\phpDesigner\XDebugCache"
    
    Все настройки меняете на ваши.
  4. Перезапукаем Апач (панель управления - администрирование - службы - апач - перезапустить), выполняем функцию phpinfo(), вывод должен содержать строку:
    This program makes use of the Zend Scripting Language Engine:
    Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
    Если не содержит, ищем ошибку. Или, если лень, копируем исходный код страницы вывода phpinfo() сюда, оно проанализирует, и скажет, что и как исправлять.
  5. Выполняем необходимые настройки дебаггера в phpDesigner, согласно скриншоту ниже. Может получиться, что вы настроете так, что не будут отображаться ошибки в синтаксисе (для этого лучше ничего не меняйте в разделе "Syntax check", если и так работает).

  6. Enjoy!
Если что не получится, спрашивайте. Если помог, не забываем спасибо :)
02:12:45 5
Следующие сообщения
*Ник: Проверка уникальности... Если вы уже зарегистрированы, авторизуйтесь.
*Сообщение:
  Загрузка...