2015-06-11 85 views
5

我想使用.env文件在Laravel 5.1中配置存儲路徑。我bootstrap/app.php看起來是這樣的:在Laravel 5.1中使用.env設置的存儲路徑

<?php 
$app = new \Illuminate\Foundation\Application(
    realpath(__DIR__.'/../') 
); 
$app->useStoragePath(getenv('STORAGE_PATH')); 

和.ENV文件中的相關行是:

STORAGE_PATH=/var/www/storage 

這是行不通的。我想通過初始化Dotenv庫後,bootstrap被處理,因此.env變量在bootstrap.php中不可用。

是否有不同的地方可以設置存儲路徑並且可以使用.env變量?

+1

刪除$app->useStoragePath(getenv('STORAGE_PATH'));或許這將有所幫助:https://mattstauffer.co/blog/extending-laravels-application - 你可以只換出路徑'ENV( ...)'。雖然還沒有測試過,所以不確定在這個時候'env'已經準備好了。 –

回答

3

config/filesystems.php您可以設置您的存儲路徑。嘗試設置你的存儲路徑,看看它是否有效。請注意,下面的例子是我對config/filesystems.php看起來的建議。不介意s3設置。這是我的項目的一部分。

記得從app.php

return [ 

    'default' => 's3', 

    'cloud' => 's3', 

    'disks' => [ 

     'local' => [ 
      'driver' => 'local', 
      'root' => env('STORAGE_PATH'), 
     ], 

     's3' => [ 
      'driver' => 's3', 
      'key' => env('AWS_KEY'), 
      'secret' => env('AWS_SECRET'), 
      'region' => env('AWS_REGION'), 
      'bucket' => env('AWS_BUCKET'), 
     ], 

     'rackspace' => [ 
      'driver' => 'rackspace', 
      'username' => 'your-username', 
      'key'  => 'your-key', 
      'container' => 'your-container', 
      'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/', 
      'region' => 'IAD', 
     ], 
    ], 
]; 
+0

這不會改變會話/緩存等內容的存儲路徑。數據雖然,我不認爲? – ceejayoz

+0

@ceejayoz是的,你說得對。上述設置僅設置文件上傳的存儲位置,如.jpg和.mp4。您可以在'config/session.php'中設置會話存儲路徑。 – MartinJH

+0

並在'config/cache.php'中緩存等:) – MartinJH