lumen 에서 filesystem 사용하기
composer require league/flysystem
$app->singleton('filesystem', function ($app) { return $app->loadComponent('filesystems', 'Illuminate\Filesystem\FilesystemServiceProvider', 'filesystem'); }); );
config/filesystems.php
<?php
return [
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
],
];
use Illuminate\Support\Facades\Storage;
...
Storage::disk('local')->put('/finbiz/file.txt', 'Contents');
// or
$path = Storage::disk('local')->putFile("/finbiz", $request->file('file'));
아래 경로에 file 이 생성된다.
- <proj>\storage\app\finbiz/file.txt
file uploads
- File Storage - Laravel - The PHP Framework For Web Artisans
- windows 에서는 extension=php_fileinfo.dll 가 필요하다.
- 참고
- 참고2
- PHP: Installation - Manual : php 5.3.0 부터는 기본으로 fileinfo 가 enable 되어 있다. windows 에서만 extension 설정을 해주면 된다.
upload 한 file 에서 url
local 을 사용하는 경우
$path = Storage::disk('local')->putFile("/public/files", $request->file('file'), 'public'); $url = Storage::disk('local')->url($path);
일단 storage/app/public 을 가리키는 symbolic link 를 만들어야 한다.
cocktail_lumen/public$ ln -s ../storage/app/public/ storage
그리고 아래처럼 coding 을 하면 된다.
$path = Storage::disk('local')->putFile("/public/files", $request->file('file'), 'public'); $url = Storage::disk('local')->url($path);
그러면 아래처럼 값을 얻을 수 있다.
- $path : storage/app/public/files/<filename>
- $url : /storage/files/<filename>
permission
주의할 점은 permission 이다. 위에서 storage/app/public/files 에 putFile 을 하게 되면, web server 가 file 을 write 하게 된다. 그래서 'public' 의 permission 을 web server를 실행한 group 으로 미리 변경해 줘야 한다.(또는 storage 의 permission 을)그리고 더불어서 group 의 write 권한도 줘야 한다.
lumen.ERROR: exception 'League\Flysystem\Exception' with message 'Impossible to create the root directory "/home/apps/l_lumen/storage/app/public/files"
chgrp -R nobody public chmod 775 public
확실치는 않지만 어쩌면 put이 아닌 putFile 을 사용했기 때문에 permission 조정이 필요한 것일 수도 있다. putFile 에 대해서는 아래 문서를 참고하자.
References
- Lumen Storage
- Lumen - 基于 Laravel 构建的最快的 PHP 微框架(Micro-Framework)。 | Laravel 中文网
- File Storage - Laravel - The PHP Framework For Web Artisans
- Need help on FileSystem/Storage
- How to get public url of an uploaded file in Laravel 5
댓글 없음:
댓글 쓰기