PHP & Xdebug: НЕ записывает стек в журнал ошибок? - PullRequest
3 голосов
/ 14 сентября 2010

Дорогие PHP люди, есть ли способ заставить Xdebug показывать весь стек на экране, но НЕ записывать его в журнал ошибок?Мне нужна только строка с самой ошибкой в ​​самом файле журнала, но я бы хотел видеть стек на экране.

1 Ответ

3 голосов
/ 14 сентября 2010

xdebug использует механизм обработчика ошибок для отображения трассировки стека. Если вы извлечете исходники xdebug и загляните в xdebug.c, вы увидите это в строке 801:

      if (XG(default_enable) && zend_hash_find(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "HTTP_SOAPACT     ION", 16, (void**)&dummy) == FAILURE) {
          zend_error_cb = new_error_cb;
          zend_throw_exception_hook = xdebug_throw_exception_hook;
      }

Функции xdebug_error_cb() (обратный вызов ошибки) и xdebug_throw_exception_hook() определены в другом файле, xdebug_stack.c, и, похоже, не проверяют какие-либо параметры конфигурации, чтобы увидеть, должна ли трассировка стека быть включена в журнал или нет. .. так что единственный вариант - переписать эти функции в php и установить новый обработчик ошибок с помощью функции set_error_handler(). Удачи!

...