Intereting Posts
Codeigniter ActiveRecord: присоединиться к обратному обращению PHP статический не очень статический Как я могу найти, где я буду перенаправлен с помощью cURL? Проверка наличия массива в многомерном массиве – отсутствие цикла – неизвестная глубина Какие факторы делают PHP Unicode несовместимым? Zend Framework DbTable insert () дважды вставляет записи Реверсивная реализация Ajax с использованием php Является ли пользовательский ввод HTML с Javascript, который отображается другим, но не с HTML-экранированным примером XSS получить все предметы категории и ее ребенка PHP: Невозможно изменить 404 код состояния, но нет ошибки в заголовке () PHP Сплит-строка после символов X в отдельное слово Как правильно настроить обработчик исключений в Zend? Несколько сеансов PHP Обнаружение пользователей Просмотр одной и той же веб-страницы или URL-адреса Что делает функцию PHP mail () настолько медленной?

PHP post_max_size переопределяет upload_max_filesize

На моем хосте сайта я видел (через 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_max_size
  • upload_max_filesize
  • memory_limit

См. Раздел « Обработка загрузок файлов: общие питфалы», которые подробно объясняют это и как рассчитать значения.

Обычным способом отправки файла является 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 :

  1. Чтобы загрузить большие файлы, значение post_max_size должно быть больше, чем upload_max_filesize.

  2. memory_limit должен быть больше, чем post_max_size

Вы всегда должны устанавливать значение post_max_size больше значения upload_max_filesize.

изменение в php.ini max_input_vars 1000