2017-07-03 8 views
0

バックグラウンドで自分のサーバ上のフォルダを削除する他のWebサイトからphp関数を呼び出しています。phpを使用してフォルダを削除しているときにフォルダ内の最後のファイルを削除できません

これは、フォルダを削除するために使用する機能です。

フォルダに3つのファイルがある場合は、2つしか削除されず、最後のファイルを削除できないか、最後のファイルでリンクが解除されます。

2つのファイルを持っている場合は、1つのファイルだけが削除されます。

is_writableを使用して書き込み可能なアクセス許可をチェックしましたが、それはすべてのファイルに当てはまります。

誰かが私を助けてくれますか?または、この関数がバックグラウンドで呼び出されているときにこの動作をデバッグする方法。

+0

あなたのコードは私に適しています。 –

+0

マニュアルをお読みください。 http://php.net/manual/en/function.readdir.php "/ *これは、ディレクトリをループするための間違った方法です* /" – bassxzero

+0

@ChrysUgwuアンリンクエラーをデバッグする方法はありますか?私の終わり。 – EmptyData

答えて

0

私のディレクトリは他の機能で開いていたので、私はclosedirのフォルダを開いて機能しています。

0
<?php 
function delete_directory($target) { 
     if (is_dir($target)) 
      $dir_handle = opendir($target); 
    if (!$dir_handle) 
      return false; 
    while($file = readdir($dir_handle)) { 
      if ($file != "." && $file != "..") { 
       if (!is_dir($dirname."/".$file)) 
        unlink($dirname."/".$file); 
       else 
        delete_directory($target.'/'.$file); 
      } 
    } 
    closedir($dir_handle); 
    rmdir($target); 
    return true; 
} 

?> 

closedidを使用すると、問題ありません。

関連する問題