Как настроить хранилище файлов SCP / SFTP?

Мое приложение Laravel должно копировать файлы на другой удаленный хост. Удаленный хост доступен только через SCP с закрытым ключом. Я хотел бы настроить новый файловое хранилище (аналогично FTP), но я не нашел информации, как определить драйвер SCP.

1

Решение

Вам нужно будет установить SFTP драйвер для Flysystem библиотека Laravel использует для своих служб файловой системы:

composer require league/flysystem-sftp

Вот пример конфигурации, которую вы можете настроить. Добавить к disks массив в конфиг / filesystems.php:

'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,
]

Расширьте файловую систему Laravel новым драйвером, добавив следующий код в boot() метод AppServiceProvider (или другой соответствующий поставщик услуг):

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));
});
}

Затем вы можете использовать API Laravel, как для локальной файловой системы:

Storage::disk('sftp')->put('path/filename.txt', $fileContents);
8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]