Pare che stat() e filename() generino errori (forse) in vista di una cartella oO dovresti provare, in uno degli esempi hanno messo un codice particolare, non ricordo quale, per riconoscere una cartella, ma te potresti controllare con is_dir()