Параметр PHP memory_limit определяет количество оперативной памяти, доступное скриптам. Неправильное значение может привести к ошибкам.
Как задать параметр PHP memory_limit
memory_limit задается в файле php.ini и ограничивает количество памяти для скриптов.
Путь к php.ini, который нужно редактировать всегда можно увидеть в файле phpinfo с кодом <?php phpinfo(); . Файл размещается в корне сайта.
Подробнее про то как посмотреть настройки PHP и найти где они заданы можно прочитать в материале по ссылке.
Как выбрать значение
Для небольших ресурсов оптимальными являются значения, измеряемые в сотнях мегабайт — 128 — 256 — 512.
Для современных CMS таких как WordPress значений меньше 64 Мб обычно уже недостаточно даже при отсутствии каких-либо плагинов, расширяющих функционал.
Ошибка говорящая о нехватке памяти может возникнуть в том числе на этапе установки CMS.
Лимиты могут быть значительно больше, все зависит от того, какие скрипты запускаются. Значения можно кратно увеличивать, перезапускать веб-сервер и проверять выводится ли ошибка повторно.
Значение memory_limit может быть довольно большим, в том числе измеряться в Гигабайтах. Однако, устанавливать слишком большие значения также неверно.
Количество ресурсов для любой виртуальной машины или физического сервера ограничено.
Фиксирован ресурса процессора и RAM. Если всю память выделить для PHP скриптов при определенных условиях ее может не хватить для других процессов, что приведет к сбоям. OOM — типичная ситуация, от него может страдать любая служба, часто это сервер баз данных.
На что обратить внимание
Также важно помнить, что memory_limit это лимит процесса. Он не ограничивает потребление памяти для всех скриптов PHP в определенный момент времени. Если всего 8 Гб RAM, а значение memory_limit 4 Гб память легко может закончиться даже если другие сервисы её активно не используют.
Недостаточно высокое значение memory_limit будет вызывать ошибки 500 с записями типа 'Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 32 bytes)' в логах веб-сервера.
Если значение увеличивается раз за разом и ошибки продолжают возникать с новыми значениями в них — имеет место утечка памяти. Она возникает из-за плохо написанных скриптов.
В такой ситуации нужно включить логи ошибок PHP, они помогут выявить скрипты, которые требуют доработки.