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)

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 после их внесения).

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


Обязательно перезапустите сервер после внесения изменений в файл .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 .


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 файл

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.