2016-06-06 5 views
1

내가 얻을 같은 누락 된 컨트롤러 예외 컨트롤러 예외 누락하는 방법 :이 추측CakePHP의 2 억제 또는 캐치 누군가가 내 CakePHP의 응용 프로그램에 존재하지 않는 URL을 액세스하려고 할 때마다

MissingControllerException: Uncaught exception 'MissingControllerException' with message 'Controller class AutodiscoverController could not be found.' in /app/Vendor/cakephp/cakephp/lib/Cake/Routing/Dispatcher.php:161 

가 예상대로입니다 하지만 새로운 유물에 문제가 생깁니다. 이것은 우리의 모니터링 어플리케이션이며 항상 예외를 등록하고 모든 사람들에게 어플리케이션에 문제가 있음을 알립니다.

새로운 유물이 그것을 등록하지 않도록 예외를 잡거나 억제하는 방법이 있습니까?

답변

2

이 내 문제를 해결 결국 방법은 다음과 같습니다 sudo apt-get install newrelic-php5

: 나는 새로운 유물의 PHP 에이전트를 설치

그럼 내 애플 리케이션을위한 ExceptionHandler를 구성했습니다. bootstrap.php에서 Configure::write('Exception.handler', 'AppExceptionHandler::handleException');

: 핸들러가 app/Lib/AppExceptionHandler.php에 위치하고 있으며이처럼 보이는 App::uses('AppExceptionHandler', 'Lib');

: 모든 예외를 통해하고있는 경우

<?php 
class AppExceptionHandler extends ErrorHandler{ 
    public static function handleException($error) { 
     if(get_class($error) == 'MissingControllerException') { 
      if (extension_loaded('newrelic')) { 
       newrelic_ignore_transaction(); 
      } 
     } 
     parent::handleException($error); 
    } 
} 

핸들러 필터 core.php에서 MissingControllerException은 새로운 Relic PHP Agent를 사용하여 현재 트랜잭션을 무시합니다. 필터링 후에 cake의 ErrorHandler에 의한 일반적인 handleException() 메소드가 실행됩니다.

0

예 당신은 당신의 앱 컨트롤러를 관리 할 수 ​​있습니다 ->으로, beforeFilter 기능

if($this->name == 'CakeError'){ 
// Perform any action in error 
}