[컴][php] lumen 에서 filesystem 사용하기



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



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

  1. Lumen Storage
  2. Lumen - 基于 Laravel 构建的最快的 PHP 微框架(Micro-Framework)。 | Laravel 中文网
  3. File Storage - Laravel - The PHP Framework For Web Artisans
  4. Need help on FileSystem/Storage
  5. How to get public url of an uploaded file in Laravel 5


댓글 없음:

댓글 쓰기