Как предотвратить появление панели инструментов отладки в среде prod - PullRequest
0 голосов
/ 02 ноября 2010

Я недавно развернул сайт Symfony 1.3.6. Я решил сохранить файл frontend_dev.php на сервере, чтобы я мог отлаживать его на локальной машине, когда это абсолютно необходимо.

Я изменил frontend_dev.php так:

<?php

require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');

$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'dev', true);

// this check prevents access to debug front controllers that are deployed by accident to production servers.
// feel free to remove this, extend it or make something more sophisticated.
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1')))
{
    //in case something screwy happens ...
    try
    {
       // die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
       sfContext::createInstance($configuration)->getController()->forward('security', 'error404');
       exit();
    }
    catch(Exception $e)
    {
        //if we got here, all bets are off anyway, just go away ....
        exit();
    }
}

sfContext::createInstance($configuration)->dispatch();

Я пытался перенаправить запрос на страницу с ошибкой 404. Тем не менее, я заметил, что когда я набрал http://www.mywebsite.com/frontend_dev.php/some_valid_url.html

Я был перенаправлен на страницу 404 (как я хотел) - НО была показана панель инструментов отладки - что, очевидно, представляет угрозу безопасности. Каков наилучший способ отключить панель инструментов при обращении к контроллеру dev с нелокальной машины?

Я думал добавить код проверки в действие error404, а затем отключить панель инструментов отладки по мере необходимости, но я не уверен, является ли это наиболее симфоничным способом сделать это.

Какая лучшая практика в этом случае?

Ответы [ 3 ]

8 голосов
/ 02 ноября 2010

sfConfig::set('sf_web_debug', false);

5 голосов
/ 07 ноября 2010

Разве вы не хотите просто отключить его в файле settings.yml?

dev:
  .settings:
    web_debug: false
2 голосов
/ 02 ноября 2010

Вы инициализируете конфигурацию в среде разработчика с включенной отладкой.Попробуйте что-то вроде:

// this check prevents access to debug front controllers that are deployed by accident to production servers.
// feel free to remove this, extend it or make something more sophisticated.
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1')))
{
    //in case something screwy happens ...
    try
    {
       // die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
       $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);

       sfContext::createInstance($configuration)->getController()->forward('security', 'error404');
       exit();
    }
    catch(Exception $e)
    {
        //if we got here, all bets are off anyway, just go away ....
        exit();
    }
}
else
{
  $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'dev', true);
  sfContext::createInstance($configuration)->dispatch();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...