2015-08-05 43 views
6

Tôi muốn thay đổi đường dẫn lưu trữ Laravel 5.1 sử dụng cho một cái gì đó như /home/test/storage. Điều này có lợi thế là những tập tin này không được lưu trữ trong kho lưu trữ, mà là khá xấu xí tôi nghĩ. Trong Laravel 4, điều này rất đơn giản với bootstrap/paths.php.Thay đổi đường dẫn lưu trữ trong Laravel 5

Trong Laravel 5, tính năng này hoạt động bằng cách sử dụng $app->useStoragePath('/path/') trong bootstrap/app.php. Tuy nhiên, tôi muốn xác định đường dẫn lưu trữ bằng tùy chọn cấu hình, chẳng hạn như $app->useStoragePath(config('app.storage_path'). Tùy chọn config gọi một biến môi trường hoặc trả về một vị trí mặc định.

Thực hiện kết quả này trong một Uncaught exception 'ReflectionException' with message 'Class config does not exist'; điều này có ý nghĩa, bởi vì chức năng này chưa được tải.

tôi đã cố gắng thiết lập các đường dẫn lưu trữ ngay sau khi khởi động:

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

này thay đổi gì cả. Tôi cũng đã thử trực tiếp ràng buộc nó với path.storage:

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

Tùy chọn cuối cùng hoạt động một phần; bộ nhớ cache chế độ xem hiện được đặt ở vị trí chính xác nhưng nhật ký vẫn ở vị trí cũ.

Trả lời

2

Sử dụng liên kết tượng trưng.

# 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

Tốt không, bởi vì đây buộc bạn phải có một vị trí cụ thể. Bạn có thể gitignore các liên kết tượng trưng và thêm nó cho mỗi cài đặt, nhưng điều này là khá hacky. – spacek33z

1

này hoạt động trên Laravel 5.2

File: app/Providers/AppServiceProvider.php

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

Đây là một giải pháp đơn giản của việc thay đổi đường dẫn lưu trữ trong Laravel 5 như chúng ta làm trong Laravel 4

trên 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); 

này sẽ làm cho đường dẫn lưu trữ là tương tự với phiên giao dịch, quan điểm, bộ nhớ cache, các bản ghi

2

Laravel 5.3 là trong 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')); 
Các vấn đề liên quan