Мое приложение Laravel должно копировать файлы на другой удаленный хост. Удаленный хост доступен только через SCP с закрытым ключом. Я хотел бы настроить новый файловое хранилище (аналогично FTP), но я не нашел информации, как определить драйвер SCP.
Вам нужно будет установить 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);
Других решений пока нет …