Ошибки при загрузке файлов в глобальной переменной $_FILES
Для того что-бы понять какая именно у вас ошибка. Достаточно вызвать:
var_dump($_FILES);
и посмотреть код ошибки в [error]
Список кодов ошибок:
Значение: 0
UPLOAD_ERR_OK
Нет ошибки, файл загружен с успехом.
Значение: 1
UPLOAD_ERR_INI_SIZE
Загруженный файл превышает директиву upload_max_filesize в php.ini.
Значение: 2
UPLOAD_ERR_FORM_SIZE
Загруженный файл превышает директиву MAX_FILE_SIZE, указанную в HTML-форме.
Значение: 3
UPLOAD_ERR_PARTIAL
Загруженный файл был загружен только частично.
Значение: 4
UPLOAD_ERR_NO_FILE
Файл не загружен.
Значение: 6
UPLOAD_ERR_NO_TMP_DIR
Отсутствует временная папка. Представлен в PHP 5.0.3.
Значение: 7
UPLOAD_ERR_CANT_WRITE
Не удалось записать файл на диск. Представлен в PHP 5.1.0.
Значение: 8
UPLOAD_ERR_EXTENSION
Расширение PHP остановило загрузку файла. PHP не дает способа определить, какое расширение заставляло остановить загрузку файла; рассмотрение списка загруженных расширений с помощью phpinfo () может помочь. Представлен в PHP 5.2.0.