Решение
PHP-выражение echo и функции var_dump(), debug_zval_dump() и print_r() являются обычными и очень популярными средствами отладки, помогающими решить различные проблемы. Однако как средства расследования эти выражения (и даже более надежный инструментарий, например, пакет PEAR Log) предоставляют доказательства, которые вы должны анализировать априори и вне контекста.
Варианты решений
- Xdebug
- Модуль Drupal
- Отладка с помощью FirePHP
- Отладчик PHPEd
- Отладчик Zend
- Использовать error_log
- log4php
- dBug.php
- DBG
- Advanced PHP Debugger (APD).
Xdebug
Страница проекта: http://www.xdebug.org/
Xdebug может показать трассировку стека, вывести дамп даже комплексных переменных, проследить использование памяти во времени и выполнить эффективное посмертное вскрытие при возникновении ошибки или аварии (не если, а когда).
Xdebug вмешивается в процесс для предотвращения бесконечных рекурсий, добавляет в сообщения об ошибках информацию о трассировке стека и функций, следит за распределением памяти, а также выполняет некоторые другие функции. Xdebug содержит также набор функций, которые вы можете добавить в свой код для получения диагностических данных времени выполнения.
Рецепт: Установка и настройка отладчика Xdebug.
Модули Drupal
Модуль Devel
Модуль Devel использует Krumo:
- traceback,
- object inspection,
- ajax overlay
Обзор модуля: Модуль Devel: отладка в Drupal.
Модуль Drupal For Firebug
Обзор модуля: Drupal For Firebug: отладка сайта в FireFox.
Для работы нужен модуль Devel и Firebug в FireFox
Отладка с помощью FirePHP
FirePHP - это расширение Firebug, которое позволяет выводить информацию в консоль Firebug непосредственно из PHP.
Страница проекта: http://www.firephp.org/
Можно передавать произвольные структуры данных и исключения. В последнем случае получим не только сам объект исключения, но и содержимое стека.
Данные передаются не в теле страницы, а в заголовках.
Можно отлаживать AJAX-вызовы.
Рецепт "Установка и настройка FirePHP".
Отладчик PHPEd
Отладчик Zend
FF есть Zend Studio Toolbar
Zend_Log
log4php
http://incubator.apache.org/log4php/
Использовать error_log
Настроить Apache писать сообщения об ошибках в файл error_log
Также можно его перенаправить в syslog (даже не другой машине).
dBug.php
Страница проекта: http://dbug.ospinto.com
DBG
Страница проекта: http://dd.cron.ru/dbg/
Advanced PHP Debugger (APD)
Страница проекта: http://pecl.php.net/apd
Документация Advanced PHP debugger
Установка Advanced PHP Debugger (APD)
Для загрузки и установки последней версии:
Вывод
FirePHP
Можно отладить AJAX, SOAP-сервисы, генераторы картинок и вообще скрипты, не отдающие непосредственно HTML-документов.
Полезно знать про $e->getTrace(), если код написан в стиле try/catch, который поддерживается в PHP5.
Использованные материалы:
Полезные ссылки:
- Отладка PHP с FirePHP в Firebug
- Найдите ошибки в PHP-приложениях при помощи Xdebug
- Introducing xdebug











