2016-04-19 19 views
1

これが本来の機能であり、これは完璧に動作...この機能が動作しないのはなぜですか? PHP

function delete_directory($dirname) { 

    if (is_dir($dirname)) 
    $dir_handle = opendir($dirname); 

    if (!$dir_handle) 
     return false; 

    while ($file = readdir($dir_handle)) { 

    if ($file != "." && $file != "..") { 
     if (!is_dir($dirname."/".$file)) 
        unlink($dirname."/".$file); 
       else 
        delete_directory($dirname.'/'.$file); 
     } 
    } 
    closedir($dir_handle); 
    rmdir($dirname); 
    return true; 
    } 

は、私は、中括弧と異なる名前でバージョンを実行しようとしましたが、それは動作していないと私はこの問題は

何であるかわからないんだけど
function borrar_directorio ($carpeta) { 

    if (is_dir($carpeta)) { 

    $abrir_directorio = opendir($carpeta); 

    if (!$abrir_directorio) { 

     return false; 
    } 
    } 

    while ($archivo = readdir($abrir_directorio)) { 

     if ($archivo != "." && $archivo != "..") { 

     if (!is_dir($carpeta."/".$archivo)) { 
      unlink($carpeta."/".$achivo); 

     } else { 

      borrar_directorio($carpeta.'/'.$archivo); 
     } 
     } 
    } 

    closedir($abrir_directorio); 
    rmdir($carpeta); 
    return true; 
} 

何が欠けていますか?

+0

間違いはありますか?あなたのエラーログには何がありますか? –

+0

@JayBlanchard 'なぜこの機能が動作しないのですか?'私はもう一つの旗を使うべきだったのですか?それをそのまま保つか? :D –

+0

@JayBlanchardエラーはありません。ディレクトリとそのファイルを削除していません。 –

答えて

0

もしあなたが書いたことの一つの可能​​性のある問題は、フォルダが存在しないか、またはパーミッションの制限やファイルシステムエラーのためにオープンできない場合でも、whileループが実行されることです。ここで

は、元のスクリプトがたぶんSCANDIRが役立つカーリーブレース

if(is_dir($carpeta)) 
    { 
    $abrir_directorio = opendir($carpeta); 
    } 
    if(!$abrir_directorio) 
    { 
    return false; 
    } 

    while($archivo = readdir($abrir_directorio)) 
    { ... 
+0

私はこのように私のコードを変更しますが、私の問題は誤植でした: ) –

0

を使用して書かれるべき方法は次のとおりです。この機能は動作しません場合は、コメントを解除エコーと表示されます

public static function delTree($dir) { 
    $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
     // echo "$dir/$file \n"; 
     is_dir("$dir/$file")) 
      ? delTree("$dir/$file") 
      : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
} 

、どの削除しようとしているファイル

+0

あなたの答えをありがとう、私は私の問題を解決したが、私はあなたのコードを試します:) –

関連する問題