PHP – ограничение памяти

max_execution_time = 30 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data ;max_input_nesting_level = 64 ; Maximum input variable nesting level memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) 

По умолчанию 128 МБ, все в порядке

Но когда я редактирую php.ini как это

  memory_limit = 128000000 ; Maximum amount of memory a script may consume (128MB) 

Я узнал:

Неустранимая ошибка: допустимый размер памяти 262144

128000000 @ 128MB или apache не знают 128000000

Мы не знаем, как обработчик php ini обрабатывает ваш запрос, когда вы не используете стандартный способ записи объема памяти с помощью буквы в конце.

Одно можно сказать наверняка, хотя даже не до 262144, 128 000 000 никогда не будет 128 Мбайт, но больше как 122 МБ, потому что, как я уверен, вы знаете 1 МБ = 1024 * 1024 байта!

Если вам действительно нужно то, что вы делаете, вы можете попробовать: 128000000b (обратите внимание на «b» в конце номера), но я не уверен, что разработчик php ini parser думал, что кто-то будет бросать в них байты.

Правильный способ – использовать блок ( 128M )

Поведение по умолчанию, если задано целое число, состоит в том, чтобы интерпретировать его как байты. См. http://php.net/manual/en/ini.core.php . И как сказал Яхель 1МБ = 1024 байта. Поэтому, если вы хотите 128 МБ, вы либо пишете в «128M», либо «134217728»,

Также помните, что вы всегда можете проверить, для чего установлен лимит памяти с помощью phpinfo(); Если ваш php не был скомпилирован с пределом –enable-memory-limit в строке конфигурации (если вы используете версию раньше 5.2.1), то ничего из этого не будет работать.

Вы должны написать, как показано ниже.

он должен быть кратным 8 memory_limit = 128M; Максимальный объем памяти, который может потреблять сценарий (128 МБ)

По умолчанию он занимает память в МБ.