PHP поставляется с настройками по умолчанию, которые обычно подходят для большинства веб-сайтов. Иногда потребности сайта приводят к необходимости изменить эти настройки PHP. Например, вашему сайту может потребоваться увеличить лимит памяти для завершения процесса.
Ошибка PHP о недостатке памяти
PHP позволяет использовать стандартный объем памяти. Иногда веб-сайту требуется больше памяти, чем установлено по умолчанию. В этом можно увеличить его, чтобы он соответствовал потребностям вашего сайта.
Также иногда может возникать ошибка, указывающую на то, что лимит памяти достигнут. Она может выглядеть следующим образом:
1 | Fatal error: Allowed memory size of 83260710 bytes exhausted (tried to allocate 4062 bytes) |
Увеличение лимита памяти в php.ini
Открываем на редактирование файл php.ini, по умолчанию /etc/php.ini
1 | nano /etc/php.ini |
в секции [PHP] редактируем или добавляем параметр memory_limit
1 2 | [PHP] memory_limit = 256M |
после этого необходимо перезапустить веб-свервер (к примеру apache)
1 | service httpd restart |
в случае с использование php-fpm требуется перезапустить только его
1 | service php-fpm restart |
Увеличение лимита памяти в .htaccess
Apache позволяет передавать параметры php с использованием .htaccess, без необходимости перезапускать сервер.
Для этого в в корне сайта добавляем (желательно как можно ближе к началу) следующий текст
1 | php_value memory_limit 128M |
После сохранения изменений настройки вступят в силу.
Увеличение лимита памяти в php скрипте
Изменения лимита памяти возможно так же в самом PHP скрипте. Аналогично в самом начале скрипта добавляем строку
1 | ini_set('memory_limit', '128M'); |
После сохранения изменений, при следующем запуске изменения вступят в силу.
Увеличение лимита памяти в WordPress
При использовании WordPress, настройки в файле php.ini могут не сработать, так как WordPress переопределяет их в файле wp-config.php. Чтобы исправить это, необходимо в файле wp-config.php, указать конкретный лимит памяти. Например:
1 2 3 4 5 | define( 'WP_MEMORY_LIMIT', '128M' ); define( 'WP_MAX_MEMORY_LIMIT', '128M' ); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php'); |