2

У меня проблема с Symfony 2.3, я не могу заставить ее работать, чтобы получить настраиваемую функцию, которая обрабатывает фатальные ошибки. Исключения Symfony работают нормально, например, 404 и т. Д., Но фатальная ошибка отсутствует.Symfony 2.3 - Пользовательские фатальные ошибки

Это то, что я получил после поиска в Интернете, у меня есть родительский контроллер в TestBundle. Другой контроллер по умолчанию расширяет TestingSomeThingController. Выделите файлы ниже для кода. Но когда я удалил; в конце строки в DefaultController отображается стандартная фатальная страница ошибки, а не «yaay», которую я вставлял в код. Кто-нибудь получил ответ на этот вопрос? Благодаря!

TestingSomeThingController

<?php 

namespace TestingSomeThing\TestBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller as BaseController; 
use Symfony\Component\HttpFoundation\Response; 

class TestingSomeThingController extends BaseController 
{ 
    public function __construct() 
    { 
     set_error_handler(array($this, 'sdfg')); 
     register_shutdown_function(array($this, 'sdfg')); 
    } 

    public function sdfg() 
    { 
     $error = error_get_last(); 
     if(isset($error)) { 
      echo 'yaay'; 
      die(); 
     } 
    } 
} 

контроллера по умолчанию
<?php 

namespace TestingSomeThing\TestBundle\Controller; 

use TestingSomeThing\TestBundle\Controller\TestingSomeThingController; 

class DefaultController extends TestingSomeThingController 
{ 
    public function indexAction($name) 
    { 
     return $this->render('TestingSomeThingBundle:Default:index.html.twig', array('name' => $name)) 
    } 
} 
+0

Возможный дубликат [Как поймать PHP Fatal Error] (http://stackoverflow.com/questions/277224/how-do-i-catch-a-php-fatal-error) – Fraser

ответ

-5

неисправимая ошибка по определению неисправимой.

Проще говоря, это означает, что обработка не может продолжаться.

Нет никакого способа справиться с этим, и вы также не должны пытаться. Все дело в том, чтобы сказать вам, что произошло что-то фатальное, и больше никакой обработки не может быть.

фа · тал/FATL/ Прилагательное (1) причинение смерти. (2) Преодоление неудачи или катастрофы.

Это верно практически на всех языках (включая английский) и не является чем-то специфичным для Symfony или PHP - вы просто не оправитесь от чего-то смертельного.

+0

Хм, я думаю вы пропустили меня поняли. Я понимаю, что невозможно восстановить фатальную ошибку, но все, что я хочу, это то, что вместо функции symfony, которая вызывается теперь для обработки фатальной ошибки (show error page and log), она будет вызывать мою собственную функцию. Где я хочу отправить электронное сообщение после возникновения фатальной ошибки. –

+0

, если вы используете php 5.2+, см. Функцию register_shutdown_function, возможно, вы сможете помочь вам http://stackoverflow.com/a/2146171/74861 – Fraser

+0

Не знаете, почему поздний голос - во всяком случае, я не понял вас неправильно. Вы ничего не можете сделать, как только произойдет что-то смертельное - это то, что смертоносно. Выполнение чего-либо восстанавливается, то есть продолжает обрабатываться после возникновения ошибки. – Fraser

Смежные вопросы