Довольно частовозникающая и легко исправляемая в 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 метров либо исправляем используя второй вариант.
Еще одна родственная ошибка:
Fatal error: Maximum execution time of 30 seconds exceeded …
Как следует из перевода ? скрипту не хватает на выполнение 30 секунд. Зачастую она возникает из-за подвисания службы сервера БД MySQL, то есть если добавление времени в php.ini не помогло:
// в самом скрипте ini_set("max_execution_time", "30"); // либо в php.ini max_execution_time=30 |
то имеет смысл попробовать перезагрузить службы (или рабочую станцию целиком ).
Лучше есть способ и легче, зайдите в php.ini , найдите строчку
; Maximum amount of time each script may spend parsing request data
memory_limit = 8M
поменяйте значение memory_limit и все
Ага, по сути тоже самое, только сразу для всех скриптов.
а если памяти сервака не хватает, что тогда делать? ну в смысле php.ini править не помогает,и в скрипты прописано уже очень много памяти, есть альтернатива какая то?
Я бы поменял сервак на более производительный
servak lokalnbIi denwer
vot postavil linux tyt to takix oshibok nt bydet?)))
Da hren ego znaet , u menya vsegda reshalos dobavleniem metrov v php.ini
a na windows kakoi servak prodlojil bbI vmesto denwer'a ???
Я использую appserv, а друзья апача любят xampp.