Если вы решили использовать каталог файлов на хостинге, то скорее всего вам не удастся грузить файлы более 200-300 kb
Отключена возможность загузки файлов. file_uploads
Установлен слишком маленький размер загружаемых файлов. upload_max_filesize
Установлено максимальное время работы скрипта слишком маленькое и файл не успевает загрузиться. max_execution_time
Установлено ограничение памяти. memory_limit
Установлен слишком маленький размер данных, посылаемых методом POST. post_max_size
Все эти проблемы можно решить, если у вас есть доступ к серверу. Нужно отредактировать php.ini.
Если вы пользуетесь хостингом, у вас нет возможности менять настройки php. В этом случае можно
попробовать попросить админов хостинга, чтобы они не много увеличили эти значения, хотя они скорее всего не согласятся.
Загрузка файлов проходит нормально, но открыть файлы не получается. Текстовые файлы могут остаться рабочими,
а вот почти все остальные типы файлов стали не рабочими.
Эта проблема может быть из-за использования Russian Apache.
Ниже привожу выдержку из моих доков, которые я по немногу собираю в интернете.
Проблемы с загрузкой бинарных файлов - классический вопрос "почему бьются файлы при upload".
Вот способ решения, предложенный Димой Бородином (http://php.spb.ru):
В директории, где лежит скрипт, делаем файл .htaccess, в котором пишем: CharsetDisable On.
В файл httpd.conf дописываем строки:
<Location />
CharsetRecodeMultipartForms Off
</Location>
Небольшие пояснения, к этому рецепту:
вышеописанная проблема, когда загруженные на сервер архивы не распаковываются и картинки не отображаются,
может возникать из-за того, что используется веб-сервер Russian Apache.
Директива CharsetDisable отключает модуль charset-processing module, т.е. никакой перекодировки при скачивании файлов,
находящихся в данной папке, происходить не будет.
Директива CharsetRecodeMultipartForms выключает перекодировку данных, переданных методом POST с заголовком Content-Type:
multipart/form-data. Т.е. двоичные данные, переданные с такой настройкой, будут оставлены в первоначальном виде,
а все остальное наполнение сайта будет перекодировано согласно текущим настройкам сервера.
Но при этом могут возникнуть осложнения: будьте готовы к тому, что в некоторых случаях текстовые части
запросов вам придется перекодировать самостоятельно. Вот что по этому поводу говорится в документации:
Используйте директиву CharsetRecodeMultipartForms, которая появилась в PL23, но при этом вам все-равно придется
перекодировать вручную текстовые части запросов. Для этого можно использовать Russian Apache API, доступное в других
модулях или Russian Apache Perl API, доступное из mod_perl.