ディレクトリ内のファイル一覧を取得する時の罠

    while ($file = readdir($handle)) {
        echo "$file\n";
    }
  • 「0」というファイル名でループを抜けてしまうので、↓が正しい。
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }
  • .と..を排除すると↓がよろしいようで
if ($dir = opendir("data/")) {
    while (($file = readdir($dir)) !== false) {
        if ($file != "." && $file != "..") {
            echo "$file\n";
        }
    } 
    closedir($dir);
}
  • こんな感じで実装
/**
 * clearcache
 */
function clearcache($gcart)
{
    $gcart->checkSession(GC_ADMIN_SESSION);
    
	$msg = '';
	if ($dir = opendir(GC_SM_COMPILE_DIR)) {
		while (($file = readdir($dir)) !== false) {
			if ($file != "." && $file != "..") {
				$msg .= "$file<br>\n";
				unlink(GC_SM_COMPILE_DIR . $file);
			}
		} 
		closedir($dir);
	}
	
	
    $gcart->assign("content", $msg . 'キャッシュをクリアしました。');
    $gcart->assign("title", 'ファイルマネージャ');
    $gcart->vars['HtmlContent'] = $gcart->fetch("ADMIN2");
}