やりたいこと
Laarvelが入っているディレクトリより上のディレクトリにファイルを保存したい。例えば /home
配下とか。
デフォルトで設定されている local
ドライバの root
のパスだと、Laravelの storage/app
ディレクトリに設定されてしまう。
①config/filesystems.php
に disks
を追加
config/filesystems.php
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
// 追加
'test' => [
'driver' => 'local',
'root' => '/home/import',
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
],
],
新しく test
ディスクを追加し、root
に任意のパスを設定。Laravelでは同じドライバに対して複数のディスクを持つことが可能。
②ファイルを保存
hoge.php
$file = 'hoge.txt';
$txt = 'hoge';
Storage::disk('test')->put($file, $txt);
config/filesystems.php
において、test
ドライバで設定した root
の値からの相対位置でファイル操作が行われる。つまり上記では、/hoge/import/hoge.txt
として保存される。