Symfony似乎提供了一种简单的方法来进行不同的开发设置,并默认提供生产和开发环境模板 - 可以通过分别访问app.php和app_dev.php来访问它们。他们似乎也选择了适当的配置文件。
我正在尝试创建自己的环境,因此我创建了app_dev_local.php并创建了config_dev_local.xml。但是,除了htaccess文件之外,我无法指定我的前端控制器是app_dev_local.php。问题是这个htaccess文件是在源代码控制下,因此我无法真正编辑它。这是否意味着我不能拥有与我的队友不同的环境?或者我弄错了什么?
答案 0 :(得分:1)
以下是我们解决问题的方法:
在/ 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>
然后在根应用程序目录
中ln -s web test
ln -s web debug
ln -s web dev
然后在application / web
中根据您的需要制作自定义test.php,debug.php或dev.php(我们已将app_dev.php重命名为dev.php)。
答案 1 :(得分:0)
我们希望在本地轻松开发多个站点,提交源代码控制,部署到生产服务器,并让它们自动在生产模式下运行。值得庆幸的是,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);