У меня есть следующая проблема: у меня есть HTML-форма, которая загружает файл с дополнительной информацией. Но он позволяет загружать файлы, размер которых меньше 10 МБ. Но когда пользователь пытается загрузить что-то большее, оба массива $_POST и $_FILES пусты (я ожидал, что $_POST будет иметь некоторые значения, а $_FILES будет иметь некоторые значения, но укажет, что есть ошибка загрузки).
Существует несколько вопросов (пустой $_POST, $_FILES), но я не нашел никакого решения или объяснения для него.
HTML-форма:
<form enctype="multipart/form-data" method="post" action="upload.php">
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
<input type="file" name="image" />
</p>
<p>
<input type="text" name="other_field" />
</p>
</form>
upload.php
print_r($_POST); // array()
print_r($_FILES); // array()
exit;
Он отлично работает, если размер файла меньше 10 МБ (ограничение размера файла - 10 МБ), и я не хочу его увеличивать, я просто хочу записать ошибку в PHP.
Обновлено (объяснение/решение) с сайта PHP
С сайта PHP (я пропустил этот раздел): http://us.php.net/manual/en/ini.core.php#ini.post-max-size
Устанавливает максимальный размер разрешенных данных. Этот параметр также влияет на загрузку файлов. Чтобы загрузить большие файлы, это значение должно быть больше, чем upload_max_filesize. Если ограничение памяти включено с помощью конфигурации script, memory_limit также влияет на загрузку файлов. Вообще говоря, memory_limit должен быть больше, чем post_max_size. Когда используется целое число, значение измеряется в байтах. Также могут использоваться сокращенные обозначения, как описано в этом FAQ. Если размер пост-данных больше, чем post_max_size, суперглавы $_POST и $_FILES пустые. Это можно отслеживать различными способами, например. передавая переменную $_GET в script обработку данных, т.е., а затем проверяя, установлен ли $_GET ['обработан'].