A memoria penso che scan_dir() consideri file anche . e .. che vengono prima di qualsiasi altro file nella cartella, quindi probabilmente dovrai anche usare is_file() per scartare . e ..
A memoria penso che scan_dir() consideri file anche . e .. che vengono prima di qualsiasi altro file nella cartella, quindi probabilmente dovrai anche usare is_file() per scartare . e ..