php - 如何配置 SCP/SFTP 文件存储?

标签 php laravel laravel-5 scp laravel-5.5

我的 Laravel 应用程序应该将文件复制到另一个远程主机。远程主机只能通过带有私钥的 SCP 访问。我想配置一个新的 file storage ( similarly as FTP ),但我没有找到有关如何定义 SCP 驱动程序的信息。

最佳答案

您需要安装 SFTP driver对于 Flysystem,Laravel 用于其文件系统服务的库:

composer require league/flysystem-sftp

这是您可以调整的示例配置。添加到config/filesystems.php 中的disks 数组:

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

关于php - 如何配置 SCP/SFTP 文件存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429322/

相关文章:

php - Laravel - 如何在用户不选择的情况下传递外键

laravel - 更改 Laravel 的 Gulp/Elixir `watch` 任务

php - 如何使用多个关键字从数据库中获取和排序最相关的条目 Laravel 5

php - 1040 php Pdo 异常中的连接过多

php - 为什么 1++ + 1 在 php 中计算结果为 2?

Laravel 4.2 尝试结帐 HTTPS 导致 NotFoundHttpException

php - 在 laravel 中动态更改时区

php - 在 PHP 中重定向/重新加载页面的最佳方式

php - Yii 2 初始化组件

mysql - 在 Laravel Query Builder 中合并来自不同数据库的查询