У меня есть следующие настройки в /etc/php/7.2/apache2/php.ini
:
max_execution_time = 300
max_file_uploads = 20
memory_limit = 32M
post_max_size = 18M
upload_max_filesize = 20M
Однако, если я загружаю файл, размер которого превышает 5M, я получаю сообщение:
Указанные данные были неверными.
И когда я помещаю полный ответ об ошибке Dropzone, я также вижу это сообщение:
Файл не может быть больше 5000 килобайт.
Когда я меняю опцию Dropzone maxFilesize
, он работает с цифрами ниже 5М, но когда он больше 5М, загрузка по-прежнему ограничена 5М.
Кроме того, у меня нет ограничений по размеру загрузки в моем файле .htaccess.
Откуда еще может возникнуть эта проблема?
=== РЕДАКТИРОВАТЬ # 1 ===
Ниже приведен результат df
на сервере:
Filesystem 1K-blocks Used Available Use% Mounted on
udev 989880 0 989880 0% /dev
tmpfs 200340 2884 197456 2% /run
/dev/sda1 10291200 3673732 6167924 38% /
tmpfs 1001696 0 1001696 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 1001696 0 1001696 0% /sys/fs/cgroup
=== РЕДАКТИРОВАТЬ # 2 ===
Я сделал базовую страницу загрузки в своем проекте Laravel и смог загрузить большие файлы (> 5M), поэтому моя проблема должна исходить из Dropzone.
Задавать MaxFileSize в опциях dropzone:
<script>
Dropzone.options.myDropzone = {
maxFilesize: 500,
}
</script>
Установить максимальный размер тела запроса в Apache внутри VirtualHost раздел:
#Set Max to 20MB
<Location />
LimitRequestBody 20971520
</Location>
Это может случиться с библиотеками, которые используют Linux tmp
папка для хранения изображения, чтобы сделать любое преобразование к нему, например, изменение размера. Поэтому стоит попытаться изменить папку, которую использует PHP для хранения файлов tmp.
Для этого вам нужно создать папку, например /tmp-alt
, Убедитесь, что эта папка имеет соответствующие разрешения для хранения в ней файлов. А затем перейдите к PHP.ini, /etc/php/7.2/apache2/php.ini
в вашем случае измените / создайте следующее свойство:
upload_tmp_dir = /tmp-alt
После изменения файла перезапустите Apache и проверьте, работает ли загрузка файла.
Моя проблема возникла из-за контроллера, где у меня также есть возможность установить максимальный размер.
public function store(Request $request)
{
$request->validate([
'file' => 'required|file|max:10000|mimes:' . $this->getAllowedFileTypes(),
'attachable_id' => 'required|integer',
'attachable_type' => 'required'
]);
...
}
Прежде всего: upload_max_filesize
Настройки указывают, какой максимальный размер файла может иметь один загруженный файл. post_max_size
однако сообщает, какой максимальный размер разрешен для всех файлов (а точнее для всех полей записей).
Если вы хотите разрешить загрузку 10 файлов по 10M, например, post_max_size
должно быть не менее 10 * 10 = 100M.
Также убедитесь, что вы используете правильный INI-файл. Бежать phpinfo()
в вашем веб-браузере и проверьте местоположение загруженного ini
файлы. Возможно, вы редактируете свои файлы CLI ini, которые могут быть другим набором файлов.
Запустив phpinfo()
Вы можете проверить свои настройки используются.