1

환경에 관한 Symfony2 문서를 읽었습니다. /app.php 또는 /app_dev.php를 사용하여 다른 환경에서 응용 프로그램을 실행하는 것에 대해서만 언급합니다. 기본 .htaccess 파일은 /app.php에 대한 요청을 /에 다시 작성하며 프로덕션 환경에 적합합니다.자동으로 개발 환경 결정

uri에서 특정 프론트 컨트롤러를 사용하지 않고도 내 앱이 환경을 결정하게하는 가장 좋은 방법은 무엇입니까? 프로덕션 서버에 PagodaBox를 사용하고 있고 APP_ENV 변수를 'production'으로 설정했습니다. 방금 app.php에 조건부 논리를 배치하여 사용할 appkernel을 결정해야합니까?

$env = getenv('APP_ENV'); 

if (! $env) 
{ 
    $env = 'development'; 
} 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\ClassLoader\ApcClassLoader; 
use Symfony\Component\Debug\Debug; 

$loader = require_once __DIR__.'/../app/bootstrap.php.cache'; 
require_once __DIR__.'/../app/AppKernel.php'; 

if ($env == 'production') 
{ 
    $kernel = new AppKernel('prod', TRUE); 
} 
elseif ($env == 'testing') 
{ 
    // Placeholder for when I'll need a testing environment 
} 
else 
{ 
    Debug::enable(); 
    $kernel = new AppKernel('dev', TRUE); 
} 

$kernel->loadClassCache(); 
$request = Request::createFromGlobals(); 
$response = $kernel->handle($request); 
$response->send(); 
$kernel->terminate($request, $response); 

답변

1

예, 올바른 결정입니다. 예를 들어 symfony 콘솔은 입력 매개 변수를 고려하지 않고 동일하게 수행합니다.

$input = new ArgvInput(); 
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); 
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; 

$kernel = new AppKernel($env, $debug);