Я пытаюсь заставить xdebug работать на моем Mac.Я использую OS 10.6 со встроенными версиями Apache (2.2.1) и PHP (5.3.8).Я следовал " инструкциям по установке " на веб-сайте xdebug, который в основном состоял из следующих шагов:
- Сборка xdebug (версия 2.1.3) из источника
- Переместить
xdebug.so
в /usr/lib/php/extensions/no-debug-non-zts-20090626
- Добавить в php.ini: zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
- Перезагрузите веб-сервер.
Насколько я понимаю, так и должно быть.Я знаю, что большинство людей используют xdebug с IDE, такой как PHPEclipse, но это не похоже на то, что нужно просто для получения отладочной информации на странице.И многие старые инструкции включают установку MAMP, но, похоже, в этом больше нет необходимости.
Признаки работы xdebug: Когда я запускаю php -m
и phpinfo()
, я получаю ожидаемую информацию о xdebug.В скриптах я могу вызывать такие функции, как xdebug_is_enabled()
(возвращает 1) и xdebug_get_function_stack()
(возвращает стек).
Способы xdebug не работает: Основная причина, по которой я установил xdebug, заключалась в том, чтобы получать трассировку стека при возникновении ошибки, а этого не происходит.Согласно этой странице документации , я должен получить трассировку стека, если для display_errors
установлено значение On в php.ini (что и есть).Я пробовал код, который должен вызывать предупреждение (например, echo(hello)
), а также код, который приводит к фатальной ошибке (например, $x->awesomefunction()
, когда $ x не является объектом).Ни один из них не производит вывод xdebug, и фатальная ошибка просто заставляет страницу молча умирать.Тестовый код, приведенный в документации, на которую я ссылаюсь, также ничего не дает.
ОБНОВЛЕНИЕ: Оказывается, что если я запускаю скрипт с фатальной ошибкой из терминала, я получаю трассировку стека от xdebug.Тем не менее, он по-прежнему не отображается, когда я запускаю скрипт из браузера
Кроме того, теперь регулярные отчеты об ошибках теперь прерываются: Ранее я получал вывод ошибок, включая команды:
ini_set("display_errors","1");
ERROR_REPORTING(E_ALL);
Теперь, размещение этих строк в моем скрипте также не приводит к сообщениям об ошибках.(в браузере. Это вызывает ошибки при запуске скрипта из терминала.)
Итак, что здесь не так?Я что-то оставил вне установки xcode?У меня в системе где-то еще висит настройка, подавляющая ошибки?Я перепробовал все, что мог придумать, но я был бы рад проверить любые ваши идеи.