自动确定开发环境

时间:2013-08-01 00:45:29

标签: php symfony development-environment production-environment

我阅读了有关环境的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);

1 个答案:

答案 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);