PHP Warning: POST Content-Length из 113 байт превышает предел -1988100096 байт в Unknown

У меня было много проблем с загрузкой изображений пользователями на моем сайте.

Они могут загружать до 6 изображений

Первоначально мне пришлось изменить значения в php.ini, чтобы:

upload_max_filesize = 2000M post_max_size = 2000M max_execution_time = 120 max_file_uploads = 7 memory_limit=128M 

Мне пришлось переходить на это, так как возникали всевозможные ошибки, такие как нехватка памяти, превышение максимального количества сообщений и т. Д.

Все шло нормально, пока я не проверил свой журнал ошибок, который содержал:

  [11-Jun-2011 04:33:06] PHP Warning: Unknown: POST Content-Length из 113 байт превышает предел -1988100096 байт в Unknown on line 0
 [11-Jun-2011 04:33:12] PHP Warning: Unknown: POST Content-Length из 75 байт превышает предел -1988100096 байт в Unknown on line 0
 [11-Jun-2011 04:33:27] PHP Warning: Unknown: POST Content-Length из 74 байтов превышает предел -1988100096 байт в Unknown в строке 0
 [11-Jun-2011 04:33:34] PHP Warning: Unknown: POST Content-Length из 75 байт превышает предел -1988100096 байт в Unknown в строке 0
 [11-Jun-2011 04:33:43] PHP Warning: Unknown: POST Content-Length из 77 байтов превышает предел -1988100096 байт в Unknown в строке 0
 [11-Jun-2011 04:33:48] PHP Warning: Unknown: POST Content-Length из 74 байтов превышает предел -1988100096 байт в Unknown on line 0
 [11-Jun-2011 04:33:53] PHP Warning: Unknown: POST Content-Length из 75 байт превышает предел -1988100096 байт в Unknown on line 0
 [11-Jun-2011 04:34:20] PHP Warning: Unknown: POST Content-Length из 133 байтов превышает предел -1988100096 байтов в Unknown в строке 0
 [11-Jun-2011 04:35:29] PHP Warning: Unknown: POST Content-Length из 131 байта превышает предел -1988100096 байтов в Unknown в строке 0
 [11-Jun-2011 04:36:00] PHP Warning: Unknown: POST Content-Length из 113 байт превышает предел -1988100096 байтов в Unknown в строке 0
 [11-Jun-2011 04:36:06] PHP Warning: Unknown: POST Content-Length из 75 байт превышает предел -1988100096 байт в Unknown в строке 0
 [11-Jun-2011 04:36:34] PHP Warning: Unknown: POST Content-Length из 116 байтов превышает предел -1988100096 байт в Unknown в строке 0 

если я изменю значение post max назад назад 8M, я получаю сообщение следующим образом:

  PHP Warning: POST Content-Length из 11933650 байт превышает предел 8388608 байт в Unknown в строке 0 

Любые идеи, в которых я ошибаюсь?

Solutions Collecting From Web of "PHP Warning: POST Content-Length из 113 байт превышает предел -1988100096 байт в Unknown"

На некоторых 32- 2000M системах PHP будет использовать параметры памяти, такие как 2000M или 2G и преобразовать их в целое число байтов, не выполнив проверку границы. Затем число, начинающееся с 2G или 2048M будет равно -2147483648 байт.

Некоторые версии PHP ограничивают это вверху, поэтому он не переходит в отрицательные числа (это 32-разрядное целое число со знаком).

Если вы хотите достичь максимально возможного количества байтов в такой системе, используйте 2147483647 . Это равно двум гигабайтам минус один байт.

Альтернативно, если вам нужно иметь дело с большими данными, рассмотрите 64-битную систему.

Кроме того, вы должны учитывать следующее:

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

В вашем примере memory_limit равен 128M , поэтому он не может обрабатывать пост-данные размером более ~ 128 мегабайт.

( Это сообщение в блоге показывает, что может случиться и как велики настройки памяти на 32-битных и 64-битных системах )

Похоже, ваш «2000M» превышает предел целого числа. Из руководства :

PHP позволяет использовать ярлыки для значений бит, включая K (кило), M (мега) и G (giga). PHP будет делать преобразования автоматически, если вы используете любой из них. Будьте осторожны, чтобы не превышать 32-разрядное целое число со знаком (если вы используете 32-разрядные версии), так как это приведет к сбою вашего сценария.

попробуйте меньшее значение, скажем, 1000M . В любом случае, 2 гигабайта поступающих данных вряд ли вероятны.