2015-08-05 11 views
6

Voglio modificare il percorso di archiviazione Laravel 5.1 utilizza qualcosa come /home/test/storage. Questo ha il vantaggio che questi file non sono archiviati nel repository, il che è abbastanza brutto credo. In Laravel 4 questo era molto semplice con bootstrap/paths.php.Modificare il percorso di archiviazione in Laravel 5

In Laravel 5 funziona utilizzando $app->useStoragePath('/path/') in bootstrap/app.php. Tuttavia, voglio definire il percorso di archiviazione con un'opzione di configurazione, come $app->useStoragePath(config('app.storage_path'). L'opzione config richiama una variabile di ambiente o restituisce un percorso predefinito.

Il risultato è un Uncaught exception 'ReflectionException' with message 'Class config does not exist'; questo ha senso, perché questa funzione non è ancora stata caricata.

ho provato a fissare il percorso di archiviazione subito dopo l'avvio:

$app->booted(function() use ($app) { 
    $app->useStoragePath(config('app.storage_root')); 
}); 

Questo non ha cambiato nulla. Ho anche provato direttamente vincolano alla path.storage:

$app->bind('path.storage', function ($app) { 
    return config('app.storage_root'); 
}); 

L'ultima opzione funziona parzialmente; la cache della vista è ora collocata nella posizione corretta, ma i registri si trovano ancora nella vecchia posizione.

risposta

2

Utilizzare un collegamento simbolico.

# Move current storage folder to where you want it to be 
mv storage ../storage 
# Create a symlink to this new location 
ln -s ../storage ./storage 
+1

Preferibilmente non, perché questo ti costringe ad avere una posizione specifica. Puoi gitignore il link simbolico e aggiungerlo per ogni installazione, ma questo è abbastanza hacky. – spacek33z

1

Questo funziona su laravel 5.2

File: app/Providers/AppServiceProvider.php

public function register() { 
    ... 
    $this->app->useStoragePath(config('what_ever_you_want')); 
    ... 
} 
4

Ecco una soluzione semplice di cambiare il percorso di archiviazione in laravel 5 come facciamo in laravel 4

su bootstrap/app.php

# new storage path 
# base_path() -> returns root path 
$path_storage = base_path() . "../../storage"; 

# override already $app->storagePath using the function 
$app->useStoragePath($path_storage); 

questo renderà il percorso di memorizzazione per essere stesso con la sessione, vista, cache, registri

2

laravel 5.3 è in bootstrap/app.php

/* 
|-------------------------------------------------------------------------- 
| Set Storage Path 
|-------------------------------------------------------------------------- 
| 
| This script allows us to override the default storage location used by 
| the application. You may set the APP_STORAGE environment variable 
| in your .env file, if not set the default location will be used 
| 
*/ 

$app->useStoragePath(env('APP_STORAGE', base_path() . '/storage')); 
Problemi correlati