3

__MACOSXPHPでフォルダを削除した経験はありますか?

アーカイブを解凍した後にフォルダが生成されましたが、削除できないようです。

このis_dir関数はファイルに対してfalseを返し、再帰的な削除スクリプトを失敗させ(アーカイブ内に「一時」ファイルがあるため)、ディレクトリが空にならないようにします。

PHP5に組み込まれているZipArchiveクラス(extractToメソッド)を使用しています。

私が使用しているrmdirスクリプトは、php.netで見つけたものです。

<?php
// ensure $dir ends with a slash
function delTree($dir) {
    $files = glob( $dir . '*', GLOB_MARK );
    foreach( $files as $file ){
        if( substr( $file, -1 ) == '/' )
            delTree( $file );
        else
            unlink( $file );
    }
    rmdir( $dir );
}
?> 
4

2 に答える 2

6

PHP5を必要とする関数の改良版をhttp://www.php.net/rmdirから見つけました。

  • この関数はDIRECTORY_SEPARATORの代わりにを使用し/ます。PHPはDIRECTORY_SEPARATOR、実行中のOSの適切な文字('/'または'\')として定義します。
  • ディレクトリの場所はスラッシュで終わる必要はありません。
  • 関数はtrue、またはfalse完了すると戻ります。
function deleteDirectory($dir) {
    if (!file_exists($dir)) return true;
    if (!is_dir($dir)) return unlink($dir);
    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') continue;
        if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false;
    }
    return rmdir($dir);
}
于 2009-09-25T14:14:16.183 に答える
0

どのOSとバージョンを使用していますか?


ディレクトリとファイルへのパスを修正する必要があります。

// ensure $dir ends with a slash
function delTree($dir) {

    foreach( $files as $file ){
        if( substr( $file, -1 ) == '/' )
            delTree( $dir.$file );
        else
            unlink( $dir.$file );
    }
    rmdir( $dir );
}
于 2009-09-02T00:58:00.687 に答える