POST Content-Length превышает предел

95

Я получаю похожие ошибки в моем error_log на php, когда пользователи загружают свои файлы

Предупреждение PHP: длина содержимого POST 11933650 байт превышает предел 8388608 байт в Неизвестном в строке 0

В моем php.ini (созданном настраиваемом ini-файле в public_html) это решит эту проблему, сколько мне нужно будет установить около 1 ГБ? Я собираюсь изменить свои настройки на это в php.ini, решит ли это проблему?

upload_max_filesize = 1000M ;1GB
post_max_size = 1000M

Что бы установить предел memory_limit.

Также было бы правильно в моем сценарии проверять размер загруженного файла <1 ГБ

if($_FILES["uploadedfile"]["size"]<1000000)
daza166
источник
5
Вы уверены, что редактируете правильный php.ini?
Pekka
Вы редактируете правильный php.ini (их несколько)? Что-то еще сбрасывает настройки? (например, звонки на php_ini_set?)
Писквор покинул здание
Я создал собственный файл php.ini в public_html
daza166
@daza: вы не можете просто перетащить php.ini куда угодно. PHP проверяет только определенные места, и «текущий каталог» не входит в их число. Вы можете использовать директивы php_value в вашем httpd.conf и / или файле .htaccess для установки в конкретный каталог. Но иначе вам придется изменить его в основном файле .ini. Используйте, php_info()чтобы узнать, какие у вас «локальные» настройки и какие файлы .ini используются.
Marc B
1
создайте info.php, <?php phpinfo(); ?>скопируйте его в public_html и вызовите в браузере. Затем проверьте, правильно ли указано значение upload_max_filesize.
DanielB 08

Ответы:

97

8388608 байт - это 8M, ограничение по умолчанию в PHP. Эти изменения в php.ini действительно должны решить проблему (обязательно перезапустите сервер Apache после их внесения).

Предел памяти менять здесь не нужно.

Ceejayoz
источник
Обязательно перезапустите сервер после внесения изменений в файл .ini.
Sandhu
Если вы используете nginx + php fpm, не забудьте перезапустить демон php sudo service php5-fpm restart
Gourneau
Перезагрузка сделала это за меня. +1 Спасибо;)
Refilon
1
Позволь мне просто разместить здесь свой опыт, рестарт дал мне stop: Unknown instance:, это было просто создать новый экземпляр php5-FPM , но мой веб - сервер еще использует старый, я тогда должен был сделать sudo killall -KILL php5-fpmтоsudo service php5-fpm start
мемы
В зависимости от того, что еще делается в PHP-процессе, который обрабатывает загрузку, может потребоваться увеличение memory_limitдо суммы, превышающей желаемый максимальный размер загрузки.
Крейг Финч,
45

Я предлагаю вам изменить значение post_max_sizeс 8M на 32M в php.iniфайле.

Мэнсон
источник
39

вы просто устанавливаете на php.ini

затем установите:

upload_max_filesize = 1000M;
post_max_size = 1000M;

затем перезапустите свой xampp .. Проверьте изображение

Фарид Бластер
источник
17

Попробуйте вставить это в .htaccess, и он должен работать.

php_value post_max_size 2000M
php_value upload_max_filesize 2500M
php_value max_execution_time 6000000
php_value max_input_time 6000000
php_value memory_limit 2500M
Мел
источник
10

post_max_size должен быть немного больше, чем upload_max_filesize , потому что при загрузке с использованием метода HTTP POST текст также включает заголовки с размером и именем файла и т. д.

Если вы хотите успешно загрузить файлы размером 1ГиБ, вам необходимо установить:

upload_max_filesize = 1024M
post_max_size = 1025M

Обратите внимание, что правильный суффикс для ГБ - G, то есть upload_max_filesize = 1G.

Не нужно устанавливать memory_limit .

ArticIceJuice
источник
6

В некоторых случаях необходимо увеличить максимальное время выполнения.

max_execution_time=30

я сделал это

max_execution_time=600000

тогда я был счастлив.

Коммивояжер
источник
7
часто вы можете не захотеть делать это в php.ini, потому что это позволит ВСЕМ процессам php работать в течение этого времени. Вы можете установить его в одном файле с помощью set_time_limit (), например set_time_limit (600000)
billrichards
5

Может быть более одного файла php.ini . Например, при использовании WAMP есть 2 файла php.ini в следующих каталогах:

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

Вам нужно отредактировать первый.

Ирфанди Д. Венди
источник
4

Я не согласен, но это решение для увеличения размера файла в php.ini или .htaccess не будет работать, если пользователь отправит файл большего размера, чем разрешено в серверном приложении. Я предлагаю проверить это на веб-интерфейсе. Пример:

$(document).ready(function() {
    $ ('#your_input_file_id').bind('change', function() {
        var fileSize = this.files[0].size/1024/1024;
        if (fileSize > 2) { // 2M
            alert('Your custom message for max file size exceeded');
            $('#your_input_file_id').val('');
        }
    });
});

Марсио Муцци
источник
2
С чем не согласен?
Роб
1
Проверка на стороне клиента - это нормально, но это ничего не делает для безопасности, только для того, чтобы сразу же дать пользователю предупреждение, если он загружает большой файл. Вся цель здесь не в том, чтобы помешать пользователям загружать большой файл, а в том, чтобы позволить им загружать большой файл.
Altimus Prime
1
Нет ли для этого решения / проверки на стороне сервера? Я легко могу обойти JS-проверку.
akinuri
Nvm, разобрался:if ($_SERVER["CONTENT_LENGTH"] > (int)(str_replace("M", "", ini_get("post_max_size")) * 1024 * 1024)) { // do w/e
akinuri
2

Если вы используете версии Php 5.6.X в Windows с помощью Wamp, то расположение файла может быть в,

C:\Windows\php.ini

Просто попробуйте с

post_max_size = 100M;

Попробуйте внести изменения в Apache one. Тем самым ваш Wamp / XAMP загружает .ini файл

Сатьянараяна
источник