2

この機能を使用しています。is_file と is_writable は true を返しますが、unlink を true にするとエラーになります。これはWindowsサーバーにあります。

if(is_file($fileToDelete)) {
  if(is_writable($fileToDelete)) {
    unlink($fileToDelete);
  }
}

ファイルは、私が開いている PDF ドキュメントです。この場合、is_writable は false を返すと思っていましたが、そうではありません。

では、ファイルを削除できるかどうかはどうすればわかりますか?

ありがとうございました

4

3 に答える 3

5

逆にやってみたらどうですか?ファイルを削除して、本当になくなっているかどうかを確認してみてください。

@unlink($fileToDelete);

if(is_file($fileToDelete)) {
   // file was locked (or permissions error)
}

ただし、これが特定のケースで機能するかどうかはわかりませんが、質問のコードから判断すると、これが必要なはずです。

于 2012-08-24T22:17:43.747 に答える
1

ファイルを使用していますか?つまり、fopen($file) を実行して開いたのですか?

ファイルを削除する前に、fclose($file) を実行してください。

于 2012-08-24T22:13:30.667 に答える
0

チェック前にファイルを削除したくない場合の解決策は次のとおりです。

$file = "test.pdf";

if (!is_file($file)) {
    print "File doesn't exist.";
} else {
    $fh = @fopen($file, "r+");
    if ($fh) {
        print "File is not opened and seems able to be deleted.";
        fclose($fh);
    } else {
        print "File seems to be opened somewhere and can't be deleted.";
    }
}

シンプルで効率的。

于 2016-04-26T07:01:45.547 に答える