You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Flysystem SFTP v1升级到v3:如何配置权限匹配原directoryPerm

问题解答

完全可以把PortableVisibilityConverter里dir下的private和public都设为0755,这样就能完美匹配你之前v1版本中directoryPerm = 0755的效果。

原因很简单:v1版本的SftpAdapter里的directoryPerm是全局设置所有目录的权限,不管这个目录被标记为“公开”还是“私有”,统一应用0755。而v3的PortableVisibilityConverter是通过区分文件/目录的可见性(public/private)来对应不同权限,所以只要把两种可见性对应的目录权限都设为0755,就和原来的逻辑完全一致了。

给你一个具体的配置示例:

use League\Flysystem\Visibility;
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;

$visibilityConverter = new PortableVisibilityConverter(
    // 文件私有权限(无需修改可保持默认,仅作示例)
    filePrivate: 0644,
    // 文件公开权限(同理)
    filePublic: 0644,
    // 目录私有权限设为0755
    dirPrivate: 0755,
    // 目录公开权限也设为0755
    dirPublic: 0755,
    // 默认目录可见性(可选,因权限一致设为私有/公开均可)
    defaultForDirectories: Visibility::PRIVATE
);

// 将转换器传入SFTP文件系统配置
$filesystem = new League\Flysystem\Filesystem(
    new League\Flysystem\PhpseclibV3\SftpAdapter([
        // 你的SFTP连接配置
        'host' => 'your-sftp-host',
        'username' => 'your-username',
        'password' => 'your-password',
        // 其他必要配置...
    ]),
    ['visibility' => $visibilityConverter]
);

这样配置后,所有新建目录都会应用0755权限(所有者读/写/执行,组及其他用户读/执行),和你之前v1版本的权限行为完全一致,不会出现权限不匹配的问题。

内容的提问来源于stack exchange,提问作者Dimitrios Desyllas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:20:45