Перед созданием новой темы, пожалуйста, ознакомьтесь с FAQ по LinkorCMS

Файл в обратной связи

Супер пользователь
Сообщений: 125
У меня при попытке прикрепить файл выходит: лишком большой размер файл
Что на хостинге, что в локалке, в чем может быть проблема?

Максимальный размер файла вложения
Мб., 0 - ограничено настройками сервера.

При указании значения 9999999 - все отправляется, при 0 нет.
не правильное описание в админке

modules/feedback/index.php

Примерная строка 135

$size = $_FILES['attach']['size']/1024/1024;
if($_FILES['attach']['error'] == UPLOAD_ERR_OK && $size >= System::config('feedback/max_filesize')){
$err[] = 'Слишком большой размер файла. Максимальный размер: '.System::config('feedback/max_filesize').'мб.';
}


не было деления на 1024. размер в байтах сравнивался...
Разработчик
Сообщений: 605
Спасибо. Код отправки письма действительно не учитывает то, что при установленном ограничении как 0 он не должен его как-то ограничивать (все ложится на настройки php и веб сервера). Исправим в следующей версии.
Супер пользователь
Сообщений: 125
$size = $_FILES['attach']['size']/1024/1024;
if (System::config('feedback/max_filesize') <= 0) {
$size_max = intval(ini_get('upload_max_filesize'));
} else {
$size_max = System::config('feedback/max_filesize');
}
if($_FILES['attach']['error'] == UPLOAD_ERR_OK && $size >= $size_max) {
$err[] = 'Слишком большой размер файла. Максимальный размер: <b>'.$size_max.'</b> мб.';
}


или все таки надо ini_get('post_max_size') ??

-- Изменено "Fort": 28.08.2015 12:06 --

Правда когда 0 стоит, а на сервере знач 100, то при большей попытке загр, выходят ошибки сервера (403, или огр. пост формы...)

Так же при знач 0 в фаблон выводиться 0мб, а знач сервера)))
примерная строка 30, заменить на:

if(System::config('feedback/max_filesize') > intval(ini_get('upload_max_filesize')) or System::config('feedback/max_filesize') <= 0){


Я так понимаю нужно еще добавить условие с memory-limit ?
Что бы не видить ошибки тайм аута при загрузках огровных файлов...
Разработчик
Сообщений: 605
Fort:
Я так понимаю нужно еще добавить условие с memory-limit ?

Теоретически - да, так как мы считываем его полностью при генерации пиьсма. Практически выделяется обычно как минимум 32 мб для работы скрипта (если не больше), а отсылать письма с аттачами в десятки мегабайт - не хорошо. Так что можно просто сделать разумный лимит на размер загружаемого файла.

Fort:
Что бы не видить ошибки тайм аута при загрузках огровных файлов...

Загрузка больших файлов - это отдельный вопрос. И там уже вступает вся связка (веб-сервер, настройки, интерпретатор, его подключение к веб серверу; не обязательно речь идет о PHP). И на клиенте используется или Flash, или Java апплет (не путать с JS), или еще что-то придумывают (чтобы дробить на кусочки и отправлять через AJAX или еще как-то). Я не думаю, что у вас в форме есть потребность грузить 10 гбайтные видео как на том же ютубе.

И прямо тут нет никакой зависимости сколько дается памяти под исполнение скрипта.

По сути всю валидацию можно содрать из того же модуля файлов (/modules/downloads/admin.php). Только ввести еще проверку на максимальный размер из конфига модуля. Но походу уже пора вводить в линкоре функции для работы с аплоадом файлов (ибо идет дублирование кода, местами не очень хорошего).

На загрузку файлов влияет две директивы: максимальный размер всего POST запроса (который включает текстовые данные и файлы) и максимальный размер закачиваемого файла (который не должен быть больше, чем максимальный размер POST запроса).

По идее даже intval(ini_get('upload_max_filesize')) не является корректным. ini_get возвращает строку а-ля '10M'. Мы ее привели к числу 10, считая в уме, что у нас мегабайты. Но кто-то может догадаться записать в конфиг и '10G', и другое, что приведет к не корректному поведению скрипта.

В документации предлагается ввести для этого функцию http://php.net/manual/en/function.ini-get.php. Советую почитать документацию, тут я больше про нее пересказываю, чем про движок.
Супер пользователь
Сообщений: 125
У меня лимит 512мб, но это не суть.
Просто нужно пропаботать эту часть сайта до предела. Что бы у пользователя не было не корректно обработанных ошибок...

У меня ошибки возвращаются сверху формы и все данные формы, что заполнил пользователь(изначально терялось)...
Осталось только решить вопрос при попытке грузануть огромный файл. Желательно с мин временем вывода ошибки.
Разработчик
Сообщений: 605
На клиентской стороне в актуальных версиях браузеров с помощью JS можно определять размер файла: http://www.w3schools.com/jsref/prop_fileupload_files.asp. Только на сервере тоже проверять нужно (никогда не нужно доверять пользователю).
Гости не могут отвечать на темы. Войдите или Зарегистрируйтесь.
Здесь присутствуют
(пользователей: 0, гостей: 1)
Быстрый переход: