我阅读了有关环境的Symfony2文档。它只提到使用/app.php或/app_dev.php在不同环境中执行应用程序。默认的.htaccess文件会将请求重写为/ to /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);
答案 0 :(得分: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);