1

我通讀了有關環境的Symfony2文檔。它只提到使用/app.php或/app_dev.php在不同的環境中執行應用程序。默認的.htaccess文件會將請求重寫爲/ to /.app.php,這對生產環境非常有用。自動確定開發環境

什麼是讓我的應用程序確定環境而不必在uri中使用特定前端控制器的最佳方法?我爲我的生產服務器使用PagodaBox,並將APP_ENV變量設置爲「生產」。我應該只在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);