На моем хосте сайта я видел (через phpinfo), что
Это заставило меня подумать, что я могу загрузить файл размером до 16 МБ. Однако, когда я делаю это с помощью почтового метода (как обычно), post_max_size берет на себя и объявляет, что я отправил слишком много.
Каков метод, позволяющий отправлять файл размером до 16 МБ? GET – PUT – другое?
Надеюсь, кто-то может прояснить это для меня.
Саймон
upload_max_filesize – предел для любого отдельного файла. post_max_size – это предел всего тела запроса, который может включать в себя несколько файлов.
Учитывая post_max_size = 20M
и upload_max_filesize = 6M
вы можете загрузить до 3 файлов по 6M каждый. Если вместо post_max_size = 6M
и upload_max_filesize = 20M
вы можете загрузить только один файл из 6M, прежде чем нажать post_max_size. Это не помогает загрузить upload_max_size> post_max_size.
Непонятно, как распознать переход через post_max_size. $ _POST и $ _FILES будут пусты, но $_SERVER['CONTENT_LENGTH']
будет> 0. Если клиент просто не загружал никаких пост-переменных или файлов, то $_SERVER['CONTENT_LENGTH']
будет 0.
По загрузке файлов POST (обычно есть и другие методы). Посмотрите на атрибут метода формы, который содержит поле загрузки файла;)
Нижний предел любой связанной настройки заменяет более высокую настройку:
См. Раздел « Обработка загрузок файлов: общие питфалы», которые подробно объясняют это и как рассчитать значения.
Обычным способом отправки файла является POST, поэтому post_max_size
должен быть 16 Мб или больше.
Кстати, также играет роль memory_limit
. Он должен быть больше 16 МБ, но поскольку значение по умолчанию – 128 Мб, вы не увидите эту проблему. Пример конфигурации php.ini
:
post_max_size = 16M upload_max_filesize = 16M memory_limit = 128M
Измените это значение в php.ini
если у вас есть доступ к нему, иначе вы можете попытаться изменить их в файле .htaccess
.
php_value upload_max_filesize 16M php_value post_max_size 16M
Это будет работать, только если AllowOverride
настройки AllowOverride
. В противном случае вы должны попросить свою хостинговую компанию.
Настройки конфигурации сервера позволяют пользователям загружать файлы до 16 МБ (потому что вы установили upload_max_filesize = 16Mb), но post_max_size принимает данные сообщения только до 8 МБ. Вот почему это порождает ошибку.
Цитируется с официального сайта PHP :
Чтобы загрузить большие файлы, значение post_max_size должно быть больше, чем upload_max_filesize.
memory_limit должен быть больше, чем post_max_size
Вы всегда должны устанавливать значение post_max_size больше значения upload_max_filesize.
изменение в php.ini max_input_vars 1000