ファイルストレージ

記事の内容

概要

ファイルストレージ機能は、ファイルの保存、取得、削除を簡単に行うための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=
記事の内容
閉じる