2013-04-23 30 views
1

Symfony似乎提供了一種簡單的方法來獲得不同的開發設置,默認情況下會包含生產和開發環境模板 - 可以分別訪問app.php和app_dev.php來訪問。他們似乎也選擇了合適的配置文件。如何在不編輯htaccess的情況下訪問Symfony中的多個環境?

我想創建自己的環境,所以我創建了app_dev_local.php並且還創建了config_dev_local.xml。但是,我沒有辦法指定我的前端控制器是除了htaccess文件以外的任何地方的app_dev_local.php。麻煩的是,這個htaccess文件是在源代碼控制下,因此我無法真正編輯它。這是否意味着我不可能擁有與我的隊友不同的環境?還是我弄錯了一切?

回答

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.p hp,debug.php或dev.php(我們已將app_dev.php重命名爲dev.php)。

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); 
+0

一個可愛的解決方案。 – Lighthart 2014-11-30 07:28:49

相關問題