全体的な目標: 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 バージョン