@kolomat

Как правильно лоигровать ошибки php?

Добрый день, подскажите по такому вопросу. Не могу понять как правильно лигироать все ошибки php
Создал такой класс
<?php

namespace App;

class ErrorHandler
{
    public function __construct()
    {
        error_reporting(E_ALL);
        set_error_handler([$this, 'errorHandler'], E_ALL);
        register_shutdown_function([$this, 'fatalErrorHandler']);
    }

    public function errorHandler($errno, $errtext, $file, $line)
    {
        $message = 'Ошибка ' . $errtext . '  файл ' . $file . ' строка - ' . $line;
        echo $message;

    }

    public function fatalErrorHandler()
    {
        $error = error_get_last();
        print_r($error);
    }
}


Ошибки например неопределеных переменных или отсутвующих функций он отлавливает, а вот например ошибки синтаксиса типа
Parse error: syntax error, unexpected end of file, expecting ';' or ',' in почему то нет
Не подскажите как правильно логировать и подобные ошибки?
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
Не получится, синтаксические ошибки не отловить, так как они появляются до запуска скрипта на выполнение.

Но если перед запуском приложения выполнить php с ключом -l (--syntax-check) то приложение не будет запущено а только пройдет проверка на ошибки и при наличии она будет выведена, ее можно прочитать
exec('php --syntax-check main.php',$error_str);

p.s. если исходные тексты у вас не генерируются в процессе работы программы, синтаксическую проверку лучше проводить заранее однократно, а не в процессе работы всего приложения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы