如何在Symfony中访问多个环境而不编辑htaccess?

如何在Symfony中访问多个环境而不编辑htaccess?,symfony,symfony-2.1,Symfony,Symfony 2.1,Symfony似乎提供了一种简单的方法来进行不同的开发设置,并且默认情况下提供了生产和开发环境模板——这些模板可以分别通过访问app.php和app_dev.php进行访问。他们似乎也选择了合适的配置文件 我正在尝试创建自己的环境,所以我创建了app_dev_local.php,还创建了config_dev_local.xml。但是,除了htaccess文件之外,我无法指定我的前端控制器是app_dev_local.php。问题是这个htaccess文件受源代码控制,因此我无法真正编辑它。这是否

Symfony似乎提供了一种简单的方法来进行不同的开发设置,并且默认情况下提供了生产和开发环境模板——这些模板可以分别通过访问app.php和app_dev.php进行访问。他们似乎也选择了合适的配置文件


我正在尝试创建自己的环境,所以我创建了app_dev_local.php,还创建了config_dev_local.xml。但是,除了htaccess文件之外,我无法指定我的前端控制器是app_dev_local.php。问题是这个htaccess文件受源代码控制,因此我无法真正编辑它。这是否意味着我不能拥有一个与队友不同的环境?还是我把一切都搞错了?

以下是我们解决问题的方法:

在/etc/httpd的conf.d目录中: 文件:application.conf

Alias /application/debug  /var/www/symfony/application/debug/
Alias /application/dev    /var/www/symfony/application/dev/
Alias /application/test   /var/www/symfony/application/test/
Alias /application        /var/www/symfony/application/web/


<Directory "/var/www/symfony/application/web">
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /application/app.php [QSA,L]
  </IfModule>
</Directory>

<Directory "/var/www/symfony/application/debug/">
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /application/debug/debug.php [QSA,L]
    </IfModule>
</Directory>

<Directory "/var/www/symfony/application/dev/">
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /application/dev/dev.php [QSA,L]
    </IfModule>
</Directory>

<Directory "/var/www/symfony/application/test/">
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /application/test/test.php [QSA,L]
    </IfModule>
</Directory>
然后在应用程序/web中


根据您的需要定制test.php、debug.php或dev.php(我们在商店中将app_dev.php重命名为dev.php)。

以下是我们解决问题的方法:

在/etc/httpd的conf.d目录中: 文件:application.conf

Alias /application/debug  /var/www/symfony/application/debug/
Alias /application/dev    /var/www/symfony/application/dev/
Alias /application/test   /var/www/symfony/application/test/
Alias /application        /var/www/symfony/application/web/


<Directory "/var/www/symfony/application/web">
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /application/app.php [QSA,L]
  </IfModule>
</Directory>

<Directory "/var/www/symfony/application/debug/">
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /application/debug/debug.php [QSA,L]
    </IfModule>
</Directory>

<Directory "/var/www/symfony/application/dev/">
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /application/dev/dev.php [QSA,L]
    </IfModule>
</Directory>

<Directory "/var/www/symfony/application/test/">
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /application/test/test.php [QSA,L]
    </IfModule>
</Directory>
然后在应用程序/web中


根据您的需要定制test.php、debug.php或dev.php(在我们的商店中,我们已将app_dev.php重命名为dev.php)。

我们希望轻松地在本地开发多个站点,提交源代码控制,部署到生产服务器,并让它们在生产模式下自动运行。谢天谢地,app.php和app_dev.php之间没有太大区别,所以我们只是合并了这两个文件,并使用了一个环境变量来设置环境。最终生成的文件如下所示:

<?php

use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Debug\Debug;

// get our web environment from an environment variable
$env = getenv('environment');

$loader = require_once __DIR__ . '/../app/bootstrap.php.cache';

if( $env == 'prod' )
{
    // Possibly add APC caching here
}
if( $env == 'dev' )
{
    Debug::enable();
}

require_once __DIR__ . '/../app/AppKernel.php';

$kernel = new AppKernel($env, true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

我们希望轻松地在本地开发多个站点,致力于源代码管理,部署到生产服务器,并让它们在生产模式下自动运行。谢天谢地,app.php和app_dev.php之间没有太大区别,所以我们只是合并了这两个文件,并使用了一个环境变量来设置环境。最终生成的文件如下所示:

<?php

use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Debug\Debug;

// get our web environment from an environment variable
$env = getenv('environment');

$loader = require_once __DIR__ . '/../app/bootstrap.php.cache';

if( $env == 'prod' )
{
    // Possibly add APC caching here
}
if( $env == 'dev' )
{
    Debug::enable();
}

require_once __DIR__ . '/../app/AppKernel.php';

$kernel = new AppKernel($env, true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);