如何在 Laravel 10 上配置和使用 sftp 驱动进行存储;

问题描述 投票:0回答:1

我正在 PHP 8.2 上编写 Laravel 10 项目。 我需要访问 SFTP 主机上的一些文件。

我通过

安装了SFTP驱动程序
composer require league/flysystem-sftp-v3 "^3.0"

然后,这里是config/filesystems.php里面的配置

    'sftp' => [
        'driver' => 'sftp',
        'host' => env('SFTP_HOST'),
     
        // Settings for basic authentication...
        'username' => env('SFTP_USERNAME'),
        'password' => env('SFTP_PASSWORD'),
     
        // Settings for SSH key based authentication with encryption password...
        '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
     
        // Optional SFTP Settings...
        'port' => env('SFTP_PORT', 6323),
        'root' => env('SFTP_ROOT', ''),
    ]

另外我修改了我的 .env 文件:

SFTP_HOST="my.host.it"
SFTP_USERNAME="mysftpusername"
SFTP_PASSWORD="mysftppwd"
SFTP_PRIVATE_KEY=""
SFTP_PASSPHRASE=""
SFTP_ROOT="/PagoPA/0000999/RT"

为了测试sftp功能,我写了一个简单的路线

Route::get('test-sftp', function() {
    if (Storage::disk('sftp')->exists('RT_1000888_0000900_00000000000999999_250623160941-BNLIITRR-0597.xml')) {
        // ...
        return 'file found';
    } else {
        return 'file not found';
    }
});

系统返回给我以下错误:

League\Flysystem\UnableToCheckFileExistence
Unable to check existence for: RT_1000888_0000900_00000000000999999_250623160941-BNLIITRR-0597.xml

我是否遗漏了一些配置?

laravel sftp
1个回答
0
投票

我发现了问题。

我只需从我的 .env 文件中删除这两行

SFTP_PRIVATE_KEY=""
SFTP_PASSPHRASE=""

通过这种方式,系统对这些参数使用默认的空值,这就像一个魅力。

© www.soinside.com 2019 - 2024. All rights reserved.