我正在 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
我是否遗漏了一些配置?
我发现了问题。
我只需从我的 .env 文件中删除这两行
SFTP_PRIVATE_KEY=""
SFTP_PASSPHRASE=""
通过这种方式,系统对这些参数使用默认的空值,这就像一个魅力。