Xeza, вот как раз у файлов совсем не обязательно ставить 777, у файлов нужно 666, но проблема не в файлах, а в папке, куда происходит аплоад. Вот на эту папку должно стоять 777.
П.С: в php файлы аплоадятся не сразу в целевую папку, т.к. веб-сервер не вкурсе куда движок хотел бы поместить загружаемый файл, т.к. сначала происходит аплоад, а потом управление передается php-скрипту. Файл аплоадится во временную папку в системе (на винде кажецо в C:\windows\temp), а php-скрипт уже перемещает файл в нужную папку. Так вот права на запись должны стоять как у целевой папки для php, так и у временной для веб-сервера.