2013-05-12 78 views
3

我已經成立了start.php測試環境:設置不同的公共路徑

$env = $app->detectEnvironment(array(
    'local' => array('http://localhost*', '*.dev'), 
)); 

現在我要定義local環境

生產不同的公共路徑: '公共'=>DIR '/ ../../../WWW /',

本地:。 '公共'=>DIR'/ ../../../www/local',

但paths.php位於引導文件夾而不是應用程序,所以如何設置不同的公共路徑?

+0

由於Laravel和環境的工作方式,您無需這樣做,只需將您的測試配置和測試相關項插入到您有權訪問的引導程序文件中即可。 – ollieread 2014-02-10 13:08:43

回答

0

剛剛有同樣的問題,前幾天:我需要向公衆目錄名稱從「公共」更改爲「WWW」進行生產,因爲它是在共享託管和我不能改變它。

我搜索了一種配置方式,同時堅持配置文件系統。 我是這樣做的:創建一個新文件/app/start/production.php,並把裏面的:

if ('production' === $app['env']) 
{ 
    $app->instance('path.public', str_replace('public', 'www', $app['path.public'])); 
} 

該文件(具體到你的環境中)在引導過程中被調用,所以這小黑客應該不會造成問題。

上線本身在/vendor/laravel/framework/src/Illuminate/Foundation/start.php完成呼叫256

注:本尚未在生產測試(部署計劃在周),但測試當地環境

希望它有幫助。

2

你不知道。

這不是環境應該如何工作。環境允許您根據自己的環境獲得不同的配置值。例如,您可以在本地環境中使用native會話驅動程序,但在您的生產環境中使用redis驅動程序。

官方文檔涵蓋了configuration of environments。在使用環境時,強烈建議(從安全的角度)使用機器名稱而不是URL。

3

您可以使用paths.php中的$env變量(因爲它僅包含在start.php中)。所以你可以建立一個開關:

'public' => ($env == 'local') ? __DIR__.'/../public' : __DIR__ . '/some/where/else/public', 

適合我生產。