0

全体的な目標: PHP を使用して FTP 経由でファイルをアップロードするときに、ローカル ファイルシステムからファイルのアクセス許可をコピーします。

問題: ftp_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 人のアレン ユーザー 15572 6 月 2 日 12:40 Foo.docx
-rw-r--r-- 1 人のアレン ユーザー 16877 6 月 2 日 12:40 Bar.docx
drwxr-xr-x 2 人の allen ユーザー 4096 6 月 15 日 14:01 構成
drwxr-xr-x 9 人のユーザー 4096 6 月 15 日 14:01 コンテンツ
drwxr-xr-x 3 アレン ユーザー 4096 6 月 15 日 14:01 ローカル
-rw-r--r-- 1 人のアレン ユーザー 152274 6 月 11 日 17:13 foo1.sql
-rw-r--r-- 1 allen users 9984 Mar 2 10:44 footest.sql
drwxrwxrwx 2 アレン ユーザー 4096 6 月 15 日 14:01 tmp
drwxr-xr-x 3 人の allen ユーザー 4096 6 月 15 日 14:01 バージョン

送信先・実績ファイルのパーミッション(ftpアップロード):

--w----rT 1 ftptest ftptest 15572 6 月 15 日 14:42 Foo.docx
--w----rT 1 ftptest ftptest 16877 6 月 15 日 14:42 Bar.docx
d-wxrw--wt 2 ftptest ftptest 4096 6 月 15 日 14:42 構成
d-wxrw--wt 9 ftptest ftptest 4096 6 月 15 日 14:42 コンテンツ
d-wxrw--wt 3 ftptest ftptest 4096 6 月 15 日 14:42 ローカル
--w----rT 1 ftptest ftptest 152274 6 月 15 日 14:42 foo1.sql
--w----rT 1 ftptest ftptest 9984 6 月 15 日 14:42 footest.sql
dr----x--t 2 ftptest ftptest 4096 6 月 15 日 14:42 tmp
d-wxrw--wt 3 ftptest ftptest 4096 6 月 15 日 14:42 バージョン
4

2 に答える 2

2

$ permsmではなく、ftp_chmodに$permsを渡します。

于 2010-06-15T14:52:52.797 に答える
0

$perms &= 0511の代わりに使用し$perms &= 511ます。パーミッション マスクは 8 進数表記であり、前に 0 を指定すると、PHP は数値を 8 進数として解釈します。

于 2010-06-15T14:14:30.243 に答える