如何在Symfony中访问多个环境而不编辑htaccess?
Symfony似乎提供了一种简单的方法来进行不同的开发设置,并且默认情况下提供了生产和开发环境模板——这些模板可以分别通过访问app.php和app_dev.php进行访问。他们似乎也选择了合适的配置文件如何在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文件受源代码控制,因此我无法真正编辑它。这是否
我正在尝试创建自己的环境,所以我创建了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);