DRUPAL: фатальная ошибка: допустимая ошибка размера памяти при редактировании определенных существующих страниц - PullRequest
3 голосов
/ 14 ноября 2009
Fatal error: Allowed memory size of 18874368 bytes exhausted (tried to allocate 1481725 bytes) in __/public_html/includes/database.inc on line 224

Эта ошибка возникает в Drupal 6 каждый раз, когда я пытаюсь редактировать следующие страницы (извините за хх):

hxxp: //chipkin.com/fs-8700-125-stulz

hxxp: //chipkin.com/fs-8700-47-dnp-30

hxxp: //chipkin.com/fs8700-14-ge-mark-iv-speedtronic

hxxp: //chipkin.com/fs8700-74-veeder-root-serial-driver

Мы работаем на виртуальном хостинге, поэтому у меня нет доступа к файлу php.ini, чтобы выделить больше памяти, однако я уверен, что проблема не в этом. Есть идеи?

Ответы [ 5 ]

2 голосов
/ 14 ноября 2009

Вы можете указать ограничение памяти через .htaccess

Попробуйте добавить следующую строку в файл .htaccess в корневом каталоге вашего сайта:

php_value memory_limit 32M
2 голосов
/ 14 ноября 2009

Определенно проблема с памятью - вам будет сложно запустить сайт Drupal только на 18 мегабайтах памяти.

Ваше долгосрочное решение заключается в смене хостов - существует множество хостов, которые позволяют вам настраивать php.ini (в определенных пределах). Bluehost.com является одним из примеров.

Возможным краткосрочным решением будет удаление неиспользуемых модулей из вашей директории modules. Каждый модуль потребляет немного памяти, даже если он отключен.

Такие вещи, как кэширование и отключение statistics тоже хороши, но они мало помогут, если у вас возникают проблемы с памятью при базовых изменениях страницы.

1 голос
/ 14 ноября 2009

Я тоже на общем хосте. Вот PHP.INI, который я создал в одной из корневых папок домена Drupal:

[PHP]
memory_limit = 40M;
upload_max_filesize = 20M;
post_max_size 20M;
max_execution_time = 200;
max_input_time = 200;

У меня больше нет проблем с какими-либо глобальными ограничениями. Я не уверен, что хостер может отключить или переопределить локальный PHP.ini - мой нет, и стоит попробовать.

0 голосов
/ 14 ноября 2009

изменить settings.php (обычно на сайтах / по умолчанию) и добавить (или изменить):

ini_set('memory_limit', '96M');

... или как вам нужно.

0 голосов
/ 14 ноября 2009

Я не настолько знаком с Drupal, но пытается ли рассматриваемая страница получить большой объем данных из базы данных? Что-то вроде SELECT * для всей таблицы? Это может объяснить, почему один вызов пытается выделить столько памяти.

Смена хостов - вариант, но на данный момент стоит посмотреть, можно ли что-то сделать, чтобы ограничить данные, запрашиваемые из базы данных.

К сожалению, сообщение об ошибке мало что говорит о том, какой конкретный запрос вызывает проблему - поскольку код, создающий запрос db, находится в классе библиотеки db. Если вы можете выполнить любой вид трассировки стека, это поможет.

...