Могу ли я использовать Zend_Log для обработки ошибок PHP?

StackOverflow https://stackoverflow.com/questions/2190774

Вопрос

Я разрабатываю веб-сервис с помощью Zend, точнее, я Zend_Amf для взаимодействия с Adobe Flex.Проблема в том, что мне нелегко увидеть ошибки PHP, потому что отладчик Flex не отображает фактические ответы с сервера, если они не являются правильными Amf.Если я посещаю конечную точку Zend_Amf с помощью веб-браузера, я не получаю никаких ошибок, поэтому ошибка возникает при выполнении обработчика Amf.Прямо сейчас я использую Firebug для проверки HTTP-трафика на наличие ошибок.

На мой вопрос:Могу ли я использовать утилиту журнала (например, Zend_Log) для регистрации всех ошибок PHP, предупреждений и уведомлений в файл вместо (или в дополнение к) отправке их в ответе HTTP?

Это было полезно?

Решение

вы можете использовать set_error_handler чтобы ловить ошибки PHP и использовать Zend_Log для их регистрации по своему усмотрению.

Единственная проблема с этой функцией: она не улавливает все ошибки PHP, невозможно обнаружить такие ошибки, как синтаксические ошибки....

Другой метод — поиграть с register_shutdown_function функция

так:

error_reporting(E_ALL);
    ini_set('display_errors', 0);

    function shutdown(){
        $isError = false;
        if ($error = error_get_last()){
            switch($error['type']){
                case E_ERROR:
                case E_CORE_ERROR:
                case E_COMPILE_ERROR:
                case E_USER_ERROR:
                    $isError = true;
                    break;
            }
        }

        if ($isError){
            echo "Script execution halted ({$error['message']})";
        } else {
            echo "Script completed";
        }
    }

    register_shutdown_function('shutdown');

Стоит отметить, что даже объединив оба метода, он не сможет обнаружить все ошибки, например ошибки синтаксиса....Но вы могли увидеть такую ​​ошибку, используя обычный браузер.

Другие советы

Я не уверен, что мое решение поможет вам здесь. Но если вы замените приложение, из-за исключения был брошен, и запущен ErrumerController по умолчанию. Тогда вы можете взглянуть на http://blog.elinkmedia.net.au/2009/10/23/auplation-logging-with-zend_log/

Я в основном зарегистрировал экземпляр регистратора во время загрузки и использую его для ошибок ошибок в контроллере ошибок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top