2016-01-19 4 views
0

Я новичок в CakePHP я развивать весь свой сайт, но в какой-то момент, когда кто-нибудь напечатать мое имя сайта как www.example.com/controllername/action он открывается правильно, но кто-то типа как www.example.com/xyz то это показывает ошибку какКак настроить сообщение об ошибке в CakePHP

Missing Controller 
Error: xyzController could not be found. 
Error: Create the class xyzController below in file:  app/Controller/xyzController.php 
<?php 
class xyzController extends AppController { 

    } 
Notice: If you want to customize this error message, create app/View/Errors/missing_controller.ctp 
Stack Trace 
    APP/webroot/index.php line 109 → Dispatcher->dispatch(CakeRequest, CakeResponse) 

тот же процесс применяется в действии, как я типа www.example.com/controllername/xyz тогда он показывает ошибку, как

Notice: If you want to customize this error message, create app/View/Errors/missing_action.ctp 

, что я сделать, чтобы удалить это сообщение, если я создать этот файл в папку вида, то в заголовке колонтитул он показывает неопределенную переменную WHER e i динамически называется переменной. Что я делаю.пожалуйста, предлагайте мне, спасибо в продвинутом виде.

+0

Это может помочь, http://stackoverflow.com/questions/1745968/cakephp-how-would-i-route-all-missing-controller-action-calls-to-a-single-gene –

ответ

0

Если пользователи вашего сайта видят сообщения об ошибках, подобные этому, это означает, что у вас нет debug, установленного на 0, который он должен быть на производстве.

Убедитесь, что у вас есть Configure::write('debug', 0);, установленный в app/Config/core.php. Включите только отладку на промежуточной или локальной копии вашего сайта, иначе вы рискуете выявить сообщения об ошибках пользователям на вашем сайте, что может привести к уязвимостям.

С debug набор для 0 ошибок будет получить только войти в error.log вашего приложения и пользователь будет доставлен страницу 404. Это правильно, поскольку недостающий контроллер технически является ошибкой.

У вас возникают такие ошибки, потому что вы используете настройку магии маршрутизации при первой установке CakePHP, чтобы помочь вам в создании вашего приложения. Это хорошая идея, чтобы рассмотреть явно определить все ваши приложения маршруты в routes.php и отключив поведение маршрутизации по умолчанию, удалив эту строку из файла: -

require CAKE . 'Config' . DS . 'routes.php'; 

Если вы сделаете это, вы не получите какой-либо сообщения об ошибках для страниц, которые не существуют, но вы также не сможете получить доступ к какой-либо странице, для которой маршрут не определен. Это не обязательно плохо, Beware the Route to Evil хорошо читается в связи с этим.

0

Просто создайте файл app/View/Errors/missing_action.ctp в данном месте с помощью настраиваемых сообщений и стилей. Затем в вашем файле appController просто напишите это:

function beforeRender() { 
    if ($this->name == 'CakeError') { 
     $this->layout = false; 
    }  
}  

Надейтесь, что это сработает для вас. :)

+0

Это не затрагивает более критическую проблему CakePHP, отображающую ошибки отладки для пользователя, которым необходимо отключить использование параметра 'debug'. Он может скрыть эту конкретную ошибку, но может отображать другие непредвиденные проблемы и приводить к уязвимостям в приложении. – drmonkeyninja

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