1

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

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

4

2 回答 2

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

然后在应用程序/网络中

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

于 2013-04-23T16:39:57.047 回答
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);
于 2014-11-30T00:24:52.227 回答