1

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

1 回答 1

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);
于 2013-08-01T04:29:02.190 回答