Maybe I missed this in the suggestions: but the files coming back from readdir don't have the full pathname, and you're storing them that way (just the filenames). When you -f them, you're remembering to append the pathname on them, but when you stat the files later...you forgot to prepend "/var/www/..." again. (In addition to the other problem of not using stat()'s return value correctly.)