記事の内容
概要
ファイルストレージ機能は、ファイルの保存、取得、削除を簡単に行うためのAPIを提供します。
設定
ファイルストレージ設定はこのファイルで管理されます。
※ローカルやS3など複数のディスクを簡単に設定可能
【ファイル先】config/filesystems.php
<?php
return [
// デフォルトのファイルディスク
'default' => env('FILESYSTEM_DISK', 'local'),
// ファイルディスク
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'throw' => false,
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
'throw' => false,
],
'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'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'throw' => false,
],
],
// シンボリックリンク
// php artisan storage:link時にシンボリックリンク作成
'links' => [
public_path('storage') => storage_path('app/public'),
// 追記可能
public_path('images') => storage_path('app/images'),
],
];
シンボリック作成
外部サービスを使わない場合、storage
ディスクは公開ファイルの保存先になります。
※Webからアクセスするには、public
フォルダへのシンボリックリンクが必要
【実行命令】設定したシンボリックリンクを作成する場合
php artisan storage:link
【実行命令】設定したシンボリックリンクを破棄する場合
php artisan storage:unlink
Linuxコマンドでシンボリックリンクを作成しても問題ない
外部サービス
S3
パッケージをインストール
【実行コマンド】
composer require league/flysystem-aws-s3-v3 "^3.0" --with-all-dependencies
env設定
外部サービス(例: S3)を使用する場合は、.env
ファイルにキー情報を追加します。
【ファイル先】.env
FILESYSTEM_DRIVER=s3
# AWSの認証情報
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
# S3のリージョン
AWS_DEFAULT_REGION=your-region
# 保存するバケット名
AWS_BUCKET=your-bucket-name
# AWS S3バケットのURLを指定するオプション
AWS_URL=https://your-bucket-name.s3.amazonaws.com
FTP
FTPサーバーにファイルを保存する設定です。
パッケージをインストール
【実行コマンド】
composer require league/flysystem-ftp "^3.0"
設定
【ファイル先】config/filesystems.php
<?php
return [
// Default Filesystem Disks
'default' => env('FILESYSTEM_DISK', 'local'),
// Filesystem Disks
'disks' => [
===========================
省略
===========================
'ftp' => [
'driver' => 'ftp',
'host' => env('FTP_HOST'),
'username' => env('FTP_USERNAME'),
'password' => env('FTP_PASSWORD'),
// オプションのFTP設定
// 'port' => env('FTP_PORT', 21),
// 'root' => env('FTP_ROOT'),
// 'passive' => true,
// 'ssl' => true,
// 'timeout' => 30,
],
===========================
省略
===========================
env設定
【ファイル先】.env
FTP_HOST=
FTP_USERNAME=
FTP_PASSWORD=
FTP_PORT=
FTP_ROOT=
SFTP
セキュアなSFTPサーバーに接続する設定です。
パッケージをインストール
【実行コマンド】
composer require league/flysystem-sftp-v3 "^3.0"
設定
【ファイル先】config/filesystems.php
<?php
return [
// Default Filesystem Disks
'default' => env('FILESYSTEM_DISK', 'local'),
// Filesystem Disks
'disks' => [
===========================
省略
===========================
'sftp' => [
'driver' => 'sftp',
'host' => env('SFTP_HOST'),
// 基本認証の設定
'username' => env('SFTP_USERNAME'),
'password' => env('SFTP_PASSWORD'),
// 暗号化パスワードを使用するSSHキーベースの認証の設定
'privateKey' => env('SFTP_PRIVATE_KEY'),
'passphrase' => env('SFTP_PASSPHRASE'),
// Settings for file / directory permissions...
'visibility' => 'private', // `private` = 0600, `public` = 0644
'directory_visibility' => 'private', // `private` = 0700, `public` = 0755
// オプションのSFTP設定
// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),
// 'maxTries' => 4,
// 'timeout' => 30,
// 'useAgent' => true,
],
===========================
省略
===========================
env設定
【ファイル先】.env
SFTP_HOST=
SFTP_USERNAME=
SFTP_PASSWORD=
SFTP_PRIVATE_KEY=
SFTP_PASSPHRASE=
SFTP_HOST_FINGERPRINT=