2011-02-05 3 views
3

Я хотел бы, чтобы регистрировать ошибки PHP на сайте CakePHP, который имеет отлаживать = 0. Однако, даже если я перехожу на журнал ошибок, например:Как вы регистрируете ошибки php с помощью CakePHP, когда debug равен 0?

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED 
log_errors = On 

это ошибки не войти.

Проблема в том, что даже для ошибки синтаксического анализа, которая должна привести к тому, что среда CakePHP не будет полностью загружена (я думаю), она по-прежнему блокирует ошибку при регистрации. Если я установил отладку в 3, он будет загружаться в файл без проблем.

Я использую CakePHP 1.2. Я знаю, что это, по-видимому, стало проще в 1.3, но я не готов к обновлению.

ответ

0

define ('LOG_ERROR', 2); in core.php

+0

«Определяет тип ошибки по умолчанию при использовании функции log()». Ему нужно будет явно зарегистрировать состояние. – Leo

+0

торт перегружает регистрацию ошибок php и делает это в папке tmp /. Я верю, что это делается через класс CakeLog https://github.com/cakephp/cakephp/blob/master/cake/libs/cake_log.php#L243 – dogmatic69

+1

Нет, он не регистрируется в debug.log или error.log при отладке 0. (Хотя я могу подтвердить, что эти файлы существуют, и в них есть журналы). – Justin

0

PHP должен регистрировать ошибки в собственном файле журнала независимо от того, что делает CakePhp.

Ищите в /etc/php.ini файл (или где бы вы ни прожили) и ищите error_log. Это покажет вам, где находится PHP-журнал в вашей системе.

+1

Yah, который не работает. Когда я устанавливаю debug на 3, он регистрируется в файле, указанном в PHP.ini. Когда debug равен 0, это не так. Я могу воспроизвести это поведение. – Justin

2

Другой способ отслеживать и регистрировать ошибки будет использовать Referee plugin как это дает возможность произвольно войти и поймать всех (том числе со смертельным) ошибки, которые происходят во время exection.

+0

Интересно. Должен работать, кроме него требуется 1.3. Спасибо, что поделился. – Justin

-1

Иногда может быть иная причина. Например, у используемой структуры может быть свой собственный внутренний модуль кэширования, который сохраняет значение в буфере, пока вы продолжаете пытаться. Проверьте, генерируются ли дубликаты копий или нет. Обычно эти файлы называются filename.ext.r123 и т. Д.

+0

Это были бы собственные сообщения об ошибках. Frameworks не контролируют сообщения об ошибках PHP. – Lauri

0

В CakePHP 1.2-1.3 есть ошибка, в которой ошибки/предупреждения PHP подавляются в коде зрения при отключении отладки.

В файле торт/LIBS/View/view.php на линии № 664 он читает

@include ($___viewFn); 

Но @ директива подавляет ошибки для всего обработчика просмотра. Вместо этого это должно быть:

include ($___viewFn); 

Это позволяет создавать ошибки PHP/предупреждения в виде кода и впоследствии регистрироваться. Как только я изменил это и имел правильные параметры ведения журнала в core.php, я наконец смог получить полные журналы на производстве.

+0

Привет ... Я пытаюсь отлаживать старый проект Cake 1.2 и, похоже, не может работать с журналом даже с предложенным вами изменением. Вам нужно было внести какие-либо изменения в core.php? –