2015-06-11 5 views
5

Ich möchte den Speicherpfad in einem Laravel 5.1 mit der Datei .env konfigurieren. Mein bootstrap/app.php sieht wie folgt aus:Speicherpfad unter Verwendung von .env in Laravel 5.1

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

und die entsprechende Zeile in .env Datei ist:

STORAGE_PATH=/var/www/storage 

Dies funktioniert nicht. Ich fand heraus, dass die Dotenv-Bibliothek initialisiert wird nach der Bootstrap wird verarbeitet, so dass die .env Variablen sind nicht verfügbar in bootstrap.php.

Gibt es einen anderen Ort, an dem ich den Speicherpfad einstellen kann und die Variablen .env verfügbar sind?

+1

entfernen Vielleicht ist dies eine Hilfe sein wird: https://mattstauffer.co/blog/extending-laravels-application - man könnte tauschen nur den Weg für 'env (...) '. Habe es aber nicht getestet, also bin ich mir nicht sicher, ob 'env' zu diesem Zeitpunkt bereit ist. –

Antwort

3

In config/filesystems.php können Sie Ihren Speicherpfad festlegen. Versuchen Sie, Ihren Speicherpfad dort einzurichten und zu prüfen, ob er funktioniert. Beachten Sie, dass das folgende Beispiel mein Vorschlag ist, wie Ihr config/filesystems.php aussehen sollte. Stört nicht das s3-Setup. Das ist ein Teil meines Projekts.

Denken Sie daran, $app->useStoragePath(getenv('STORAGE_PATH')); von 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

Dies ändert nicht den Speicherpfad für Sachen wie Session/Cache/etc. Daten, glaube ich nicht? – ceejayoz

+0

@ceejayoz Yup, du hast Recht damit. Das obige Setup legt nur fest, wo Dateiuploads gespeichert werden, z. B. .jpg und .mp4. Sie können den Sitzungsspeicherpfad in 'config/session.php' festlegen. – MartinJH

+0

und Cache in 'config/cache.php' etc. :) – MartinJH