Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
М_Сергей
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 161
#1

Загрузка большого файла. Ошибка - PHP

31.01.2018, 01:38. Просмотров 223. Ответов 7
Метки нет (Все метки)

Здравствуйте!

При загрузке большого файла, а я нарочно загружаю слишком большой (для проверки) вылезает вот такая ошибка:
Warning: POST Content-Length of 19903281 bytes exceeds the limit of 11534336 bytes in Unknown on line 0

Настройки в php.ini следующие:
max_execution_time 600
max_input_time 600
upload_max_filesize 10M
post_max_size 11M

Если загружаю файл в обозначенных в настройках рамках, то понятное дело все работает. Но я все никак не могу сообразить что нужно сделать, чтобы эта ошибка не вылазила, даже если файл слишком большой, т.к. у меня для этого специальное предупреждение заточено. И если я правильно понимаю, то оно не успевает сработать, т.к. вылазит эта ошибка и все портит. Форма для загрузки файла предназначена для любого пользователя (чтобы загружать картинки). В случае каких-то нестандартных ситуаций выпрыгивает сообщение с информацией (большой файл, или маленькая картинка, или не тот формат файла, или вообще не выбран файл).

В общем, как решить эту проблему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2018, 01:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Загрузка большого файла. Ошибка (PHP):

Загрузка файла
Всем привет. Я в этом мало что соображаю, но мне удалось найти PHP код для...

Загрузка файла
Сейчас разбираюсь с загрузкой картинок на сервер. И возник такой вопрос, мы...

Хакерская загрузка файла
Мне закачивают в 5 раз посторонние папки Посмотрите на код,что он означает и...

Загрузка и вывод файла
Доброго времени суток! Прошу вашей помощи, т.к. изучение рнр только начал,...

Загрузка файла на сервак
Сразу скажу что скрипт работает нормально , но всё таки хотелось услыхать от...

Загрузка файла php
Здравствуйте! Мне нужно реализовать автозакачку файла на сервер. Как это...

7
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,207
31.01.2018, 01:45 #2
Цитата Сообщение от М_Сергей Посмотреть сообщение
В общем, как решить эту проблему?
Проверять размер файла на клиенте
0
М_Сергей
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 161
31.01.2018, 21:09  [ТС] #3
Вы имеете ввиду это?
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">

Если да, то у меня другой вопрос. А как вообще "по-взрослому" это делается? Я как-то с недоверием отношусь к этой проверке со скрытым полем. Тем более что ее легко обойти и тогда все равно ошибка выплывет. Может можно заставить PHP не генерировать эту ошибку?
0
Jewbacabra
Эксперт PHP
3093 / 2680 / 1226
Регистрация: 24.04.2014
Сообщений: 8,207
31.01.2018, 22:02 #4
Цитата Сообщение от М_Сергей Посмотреть сообщение
Вы имеете ввиду это?
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
Нет, я имею ввиду добавить обработчик на форму, который бы проверял размер загружаемого файла.
Цитата Сообщение от М_Сергей Посмотреть сообщение
Тем более что ее легко обойти и тогда все равно ошибка выплывет.
Тому, кто будет пытаться загрузить большой файл в обход формы все равно, пусть выплывает
0
М_Сергей
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 161
31.01.2018, 23:42  [ТС] #5
Вы имеете ввиду обработчик с помощью JS? Я просто этого никогда не делал...
И еще... Меня, конечно, ничуть не волнует эстетическое восприятие злоумышленником этой ошибки. Просто я рассуждаю так, чем меньше информации он получит тем лучше, а тут как ни крути, а кое-какие настройки из php.ini на глазах...
0
М_Сергей
8 / 8 / 3
Регистрация: 06.12.2013
Сообщений: 161
12.02.2018, 00:28  [ТС] #6
Здравствуйте!

Поскольку проблему свою так и не решил, дабы не создавать новую тему, продолжаю здесь.
И так проблема все та же, при загрузке большого файла, т.е. превышающего лимит в настройках платформы PHP, вылазит ошибка типа: Warning: POST Content-Length of 19903282 bytes exceeds the limit of 11534336 bytes in Unknown on line 0.

Хочу для начала разобраться на стороне сервера.
Читаю различные статейки, смотрю видео на эту тему... много чего говорится о пользовательских исключениях... Но это исключение, на сколько я понимаю генерирует сам PHP. Как его обработать и "спрятать" это сообщение в упор не могу понять.
Вот фрагмент кода:
PHP
1
2
3
$upload = new photoManagerGoods($dirUploadPic); //экземпляр класса загрузки фотографии
$uploadResult = $upload->directUpload(); //вызов метода обработки и сохранения фото
$uploadInfo = $upload->getMessages(); //метод вывода сообщений об ошибках
.

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

Отзовитесь кто разбирается в обработке ошибок и исключений. Использую PHP7.

Добавлено через 7 часов 57 минут
В общем, я решил вроде как проблему радикальным способом - в конфигурационном файле выставил запрет на вывод ошибок. Описанная ошибка перестала выплывать.
Если я правильно понял, в моем случае бесполезно обрабатывать какие-либо исключения в коде, т.к. в самом коде никаких ошибок и не возникает. Ошибка происходит в самой платформе PHP, т.к. возникает конфликт размера файла и лимита на размер в настройке. Поэтому ошибка выводилась в любом случае, а за ней спокойно следовала вся разметка без ошибок.

Кто знает, подскажите, на сколько я правильно все сделал...
0
Jodah
Эксперт PHP
2704 / 2376 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
12.02.2018, 01:32 #7
Цитата Сообщение от М_Сергей Посмотреть сообщение
Но это исключение, на сколько я понимаю генерирует сам PHP.
Ошибки и исключения - это разные механизмы в PHP. В вашем случае Warning - это просто ошибка, её нельзя просто так отловить как исключение.

Одно из решений - свой обработчик ошибок. С помощью set_error_handler, пишем обработчик, в котором при любой ошибке выбрасывается исключение, т.е. можно превратить почти все ошибки в исключения, по крайней мере Notice и Warning. И тогда их уже можно будет отлавливать.
0
sashok991
19 / 19 / 5
Регистрация: 26.12.2013
Сообщений: 158
12.02.2018, 13:07 #8
error_reporting в помощь.
0
12.02.2018, 13:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2018, 13:07
Привет! Вот еще темы с решениями:

Простейшая загрузка файла на сервер!
$uploaddir = '/home/cp350050/public_html/shop/sell/pic/'; $uploadfile =...

Загрузка файла на Яндекс.Диск
Делаю функцию автоматического создания бекапа сайта примерно так: - Делается...

Загрузка на сервер файла размером 300мб
И в php.ini выставил upload_max_filesize равным 300M, а post_max_size — 300M...

Загрузка .xlsx файла и вывод в HTML
Суть проста, чтобы пользователь загружал любой excel файл, и ему выводилась...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru