web-dev-qa-db-ja.com

SCP / SFTPファイルストレージを構成するにはどうすればよいですか?

私のLaravelアプリケーションはファイルを別のリモートホストにコピーする必要があります。リモートホストには秘密鍵を使用してSCP経由でのみアクセスできます。新しい ファイルストレージFTPと同様 )、しかし、SCPドライバーを定義する方法についての情報は見つかりませんでした。

6

Flysystemの場合は SFTPドライバー をインストールする必要があります。ライブラリLaravelはファイルシステムサービスに使用します:

_composer require league/flysystem-sftp
_

微調整できる構成の例を次に示します。 config/filesystems.phpdisks配列に追加します。

_'sftp' => [
    'driver' => 'sftp',
    'Host' => 'example.com',
    'port' => 21,
    'username' => 'username',
    'password' => 'password',
    'privateKey' => 'path/to/or/contents/of/privatekey',
    'root' => '/path/to/root',
    'timeout' => 10,
]
_

AppServiceProvider(または他の適切なサービスプロバイダー)のboot()メソッドに次のコードを追加して、Laravelのファイルシステムを新しいドライバーで拡張します。

_use Storage;
use League\Flysystem\Filesystem;
use League\Flysystem\Sftp\SftpAdapter;
...
public function boot()
{
    Storage::extend('sftp', function ($app, $config) {
        return new Filesystem(new SftpAdapter($config));
    });
}
_

次に、ローカルファイルシステムの場合と同じようにLaravelのAPIを使用できます。

_Storage::disk('sftp')->put('path/filename.txt', $fileContents);
_
18
Cy Rossignol