Allowed memory size of 8388608 bytes exhausted

Довольно частовозникающая и легко исправляемая в web-скриптах ошибка.
Мною была замечена в NetCat и Joomla (но судя по серпу гугла бывает и в Drupal).

Эта ошибка может возникать в сценариях PHP, когда требования php-скрипта к памяти по умолчанию превышает 8MB предел. Проблема эта легко решается.

1. Чтобы изменить ограничение памяти для одного конкретного сценария необходимо вставить строку кода в начало скрипта, например такую:

<?php
ini_set("memory_limit","12M");
...

Параметр "12M" устанавливает предел использования памяти скриптом до 12 мегабайтам (12582912 байт). Если эта цифра не спасла можно продолжать ее увеличивать пока скрипт не заработает или у сервака не кончится память.
2. Также есть возможность произвести эти изменения настроек предела памяти надолго и для всех скриптов PHP, работающих на сервере, изменив одну строчку в файле настроек php.ini:

...
memory_limit = 12M
...

Имейте в виду, что увеличение предела требуемой скрипту памяти плохая замена хорошего кода. Плохо написанный скрипт может неэффективно тратить память, что может вызвать серьезные проблемы для часто выполняемых скриптов. С другой стороны это не так важно для ресурсоемких, но редкозапускаемых приложений, например, для процессов импорта и обработки больших баз данных.

Решение проблемы "Allowed memory size of 8388608..." при установке NetCat

Иногда при установке NetCat на локальный сервер (denwer, appserv или xammp) при первом вызове главной страницы выпадает ошибка (при использовании xdebug.dll):


( ! ) Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 393216 bytes) in C:\AppServ\www\netcat\require\s_list.inc.php on line 1279
Call Stack
# Time Memory Function Location
1 0.0007 64224 {main}( ) ..\index.php:0
2 0.0149 267432 require( 'C:\AppServ\www\netcat\require\e404.php' ) ..\index.php:4
3 0.7702 7168936 require( 'C:\AppServ\www\netcat\index.php' ) ..\e404.php:474
4 0.7757 7320880 require( 'C:\AppServ\www\netcat\require\index.php' ) ..\index.php:27

Таким образом становится понятно, что памяти нехватило скрипту e404.php — пишем строку про 12 метров либо исправляем используя второй вариант.

Комментарии:

Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

*Required Fields