代码之家  ›  专栏  ›  技术社区  ›  AllenJB

PHP:使用fileperms和ftp\chmod复制文件权限

  •  0
  • AllenJB  · 技术社区  · 15 年前

    使用PHP通过FTP上传文件时,从本地文件系统复制文件的权限。

    虽然ftp\u chmod似乎成功了,而且根据代码中的print语句,我设置了正确的权限,但它设置了完全错误的权限。

    代码:

    <?php
        $perms = fileperms($src);
        if ($perms !== false) {
            // We only take the last 3 digits, since we're only interested in 'normal' file permissions, not extended ones.
            $perms &= 511;
            $permsm = sprintf('%o', $perms);
            print "DEBUG: Setting permissions: $perms :: ". decoct($perms) ." :: $permsm :: $dst\n";
            ftp_chmod($conn_id, $permsm, $dst);
        }
    ?>
    

    结果是: 源/预期文件权限(本地文件系统):

    -rw-r--r-- 1 allen users  15572 Jun  2 12:40 Foo.docx
    -rw-r--r-- 1 allen users  16877 Jun  2 12:40 Bar.docx
    drwxr-xr-x 2 allen users   4096 Jun 15 14:01 configuration
    drwxr-xr-x 9 allen users   4096 Jun 15 14:01 content
    drwxr-xr-x 3 allen users   4096 Jun 15 14:01 local
    -rw-r--r-- 1 allen users 152274 Jun 11 17:13 foo1.sql
    -rw-r--r-- 1 allen users   9984 Mar  2 10:44 footest.sql
    drwxrwxrwx 2 allen users   4096 Jun 15 14:01 tmp
    drwxr-xr-x 3 allen users   4096 Jun 15 14:01 versions
    

    目标/实际结果文件权限(ftp上载):

    --w----r-T 1 ftptest ftptest  15572 Jun 15 14:42 Foo.docx
    --w----r-T 1 ftptest ftptest  16877 Jun 15 14:42 Bar.docx
    d-wxrw--wt 2 ftptest ftptest   4096 Jun 15 14:42 configuration
    d-wxrw--wt 9 ftptest ftptest   4096 Jun 15 14:42 content
    d-wxrw--wt 3 ftptest ftptest   4096 Jun 15 14:42 local
    --w----r-T 1 ftptest ftptest 152274 Jun 15 14:42 foo1.sql
    --w----r-T 1 ftptest ftptest   9984 Jun 15 14:42 footest.sql
    dr----x--t 2 ftptest ftptest   4096 Jun 15 14:42 tmp
    d-wxrw--wt 3 ftptest ftptest   4096 Jun 15 14:42 versions
    
    2 回复  |  直到 13 年前
        1
  •  2
  •   Sjoerd    15 年前

    将$perms传递给ftp\u chmod,而不是$permsm。

        2
  •  0
  •   Sjoerd    15 年前

    使用 $perms &= 0511 而不是 $perms &= 511