Laravel Storage SFTP 和上传文件权限

Car*_*ora 6 storage sftp laravel

我正在使用 Storage:SFTP (league/flysystem-sftp) 将一些文件上传到外部服务器。一切顺利,但有一个小问题:文件以 0644 (-rw-r--r--) 权限上传。我尝试在 put 方法上使用“public”选项作为文档中的示例,例如

Storage::disk('remote-sftp')->put($filename, $contents, 'public');
Run Code Online (Sandbox Code Playgroud)

但如果失败返回 FALSE 并且不上传文件。

如果我删除 'public' 参数,一切顺利,但文件权限错误。

有没有办法将上传的文件权限设置为0666之类的?

Car*_*ora 8

最后的解决方案是结合 Alpy 的答案和配置。调用 setVisibility() 没有失败,但将权限保留在 0644 中。深入研究 FTP/SFTP 驱动程序发现“public”权限有一个模式,可以使用“permPublic”键在配置中分配,因此写入配置/文件系统。 php 所需的八进制权限,它按预期工作。

  'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    'remote-sftp' => [
        'driver' => 'sftp',
        'host' => '222.222.222.222',
        'username' => 'myuser',
        'password' => 'mypassword',
        'visibility' => 'public',
        'permPublic' => 0766, /// <- this one did the trick
// 'port' => 22,
        'root' => '/home',
// 'timeout' => 30,
    ],

],
Run Code Online (Sandbox Code Playgroud)

];