PHP: Копирование прав доступа к файлам с помощью fileperms и ftp_chmod - PullRequest
0 голосов
/ 15 июня 2010

Общая цель: скопировать права доступа к файлам из локальной файловой системы при загрузке их через FTP с использованием PHP.

Проблема: в то время как ftp_chmod кажется успешным, и в соответствии с оператором печати в коде I 'm устанавливает правильные разрешения, устанавливает совершенно неправильные разрешения.

Код:

<?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 ]

2 голосов
/ 15 июня 2010

Передайте $ perms в ftp_chmod, а не $ permsm.

0 голосов
/ 15 июня 2010

Используйте $perms &= 0511 вместо $perms &= 511.Маски прав доступа указаны в восьмеричной записи, а предыдущий 0 заставит PHP интерпретировать число как восьмеричное.

...