3

OK、これを理解するのを手伝ってください。

Linuxシステムに2人のユーザーがいて、どちらも「web-users」グループに属しています。

1つはWebサーバーとphp-cgiで使用されるwww-dataで、もう1つは私のftpユーザーです。

ftp経由でファイルをアップロードすると、dirsでは775、ファイルでは664に設定されます。サーバー(ftpユーザーと同じグループ)でスクリプトを実行して、そのディレクトリと内部のファイルを削除すると、ファイルのリンク解除は正常に機能しますが、コマンドrmdirが機能せず、許可が拒否されました!?そして、はい、ディレクトリは空になった後に削除されます。

775は、グループのユーザーがファイルの664と同じように削除できることを意味するのはなぜですか。

ありがとう!

4

3 に答える 3

1

削除しようとしているディレクトリが含まれているpermissionsのを確認できます。parent

今週初めにスクリプトで生成されたディレクトリをいくつか削除していましたが、それらのアクセス許可がに設定されていても、ディレクトリへのアクセスを777許可するまで「アクセス許可が拒否されました」というメッセージが表示されていました。Writeparent

于 2010-10-15T23:37:59.510 に答える
0

以前に同じ問題が発生し、コードは次のようになりました。

function recurse_delete_dir($dir) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file != '.' && $file != '..') {
                 $child_file = $dir . $file;
                 if (is_dir($child_file)) {
                     recurse_delete_dir($child_file);
                 }
                 else {
                     unlink($child_file);
                 }
            }
        }
        rmdir($dir);
    }
}

私自身は許可の問題だと思っていましたが、-ingのclosedir前に電話する必要があることがわかりました。rmdirそれで:

closedir($dh);
rmdir($dir);

たぶんあなたの問題は私のものと似ていますか?

于 2010-09-06T16:28:11.260 に答える
-2

ファイルを含むディレクトリでrmdir()を使用することはできません。rmdir()を使用してディレクトリを削除する前に、ディレクトリを空にする必要があります。

于 2010-09-06T10:33:08.350 に答える