【问题标题】:Determining development environment automatically自动确定开发环境
【发布时间】:2013-08-01 00:45:28
【问题描述】:

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

【问题讨论】:

    标签: php symfony development-environment production-environment


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多