Ошибка 500 (Максимальное количество выделенной памяти) в новой установке Drupal 8 после изменения настроек дисплея

#php #drupal #drupal-8

Вопрос:

Я создал новый экземпляр Drupal 8 и установил два модуля:

  • Пункты (8.x-1.12)
  • Редакции ссылок на сущности (8.x-1.9)

Я также установил тему Barrio (Баррио 5.5.1.)

Затем я пошел дальше и создал новый тип контента с двумя полями (обе редакции абзацев). При попытке добавить новую страницу, перейдя в раздел Содержимое -> Добавить, все работает нормально, пока я не внесу какие-либо изменения в Отображение формы или Настройки отображения типа содержимого. После внесения изменений, независимо от того, какие изменения были внесены, я получаю сообщение об ошибке 500 при добавлении страницы указанного типа контента.

Соответствующие записи в журнале:

 var/www/vhosts/some-website.com/httpdocs/core/lib/Drupal/Core/Field/WidgetBase.php on line 510', referer: https://some-website.com/node/add/

[Thu Jun 24 16:33:28.779959 2021] [proxy_fcgi:error] [pid 10213:tid 140020013704960] [client 91.249.132.211:43799] AH01071: Got error 'PHP message: PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 135168 bytes) in /var/www/vhosts/some-website.com/httpdocs/core/lib/Drupal/Core/Field/WidgetBase.php on line 510'

[Thu Jun 24 16:36:33.558731 2021] [proxy_fcgi:error] [pid 10213:tid 140019649947392] [client 91.249.132.211:62936] AH01071: Got error 'PHP message: PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 135168 bytes) in /var/www/vhosts/some-website.com/httpdocs/modules/paragraphs/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php on line 821', referer: https://some-website.com/node/add/

[Thu Jun 24 16:36:55.127020 2021] [proxy_fcgi:error] [pid 10213:tid 140019616376576] [client 91.249.132.211:63829] AH01071: Got error 'PHP message: PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 135168 bytes) in /var/www/vhosts/some-website.com/httpdocs/core/lib/Drupal/Core/Field/WidgetBase.php on line 510'
 

Я уже пытался увеличить лимит памяти до экстремальных значений, но безуспешно.
В настоящее время я использую PHP v7.3.28, а также ядро Drupal 8.9.16.
Установка выполняется на сервере Linux через Plesk.

Кто-нибудь имеет представление, что может быть не так?

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

1. Это не ответ, но сообщаемые ошибки не указывают на проблему с памятью, связанную с системой, а скорее указывают на функцию PHP, которая работает не так, как ожидалось. Т. е. ваши попытки увеличить лимиты памяти не являются решением. Посмотрите на функции/методы приложения, которые создают ошибку. К сожалению, здесь слишком мало что можно предпринять, чтобы дать вам надлежащий ответ.

2. Если вы используете редакции ссылок на сущности с полем, для которого количество элементов равно 1 (я предполагаю, что это делается, поскольку вы можете добавлять столько, сколько захотите), то вы можете попробовать этот патч: https://www.drupal.org/project/drupal/issues/3137275.patch

3. Я попробовал патч, но проблема все еще появляется. Все равно спасибо!

4. 256 М — это не «экстремальное значение», вы уверены, что увеличение лимита памяти прошло успешно? Что делать, если вы установите его в -1 положение «Отключить»?

Ответ №1:

У вас установлено значение памяти менее 256 МБ, которое он пытался выделить — (268435456 135168) / 1024 / 1024

Вы упомянули,

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

В комментарии,

Да, определенно успешно и без изменений, независимо от установленного значения

Если вы перейдете к /admin/reports/status тому , сообщает ли это о 256 МБ или сообщает о более высоком, экстремальном значении, которое вы настраиваете.

Если он не отображается, перейдите /admin/reports/status/php и поищите Loaded Configuration File . Это значение будет указывать на php.ini файл, который вы должны изменить.

Убедитесь, что вы изменяете этот файл.

Если это тот файл, который вы изменяете, я бы просто попробовал перезапустить весь сервер. Либо вы только перезапускаете Apache, а PHP не работает как модуль, либо происходит что-то еще, например, существует верхний предел или значение переопределяется в другом месте.

Ответ №2:

Просто вопрос (это может быть и вашим ответом): был ли ваш сервер общим? Достаточно ли у него памяти для запуска приложения или, по крайней мере, достаточно памяти для выполнения основных команд установки?

У меня была та же проблема с Magento, но это связано с тем, что сервер является общим, и когда я попытался использовать сценарий CI/CD для развертывания приложения на сервере, композитор ломался из-за кучи памяти.

Но в любом случае проблема может заключаться в следующих причинах:

  • На вашем сервере недостаточно памяти.
  • Конфигурация php.ini устанавливает максимальный предел использования памяти.

Иногда это может быть слишком большой библиотекой, так как установка занимает слишком много времени (из-за подключения к Интернету или проблем с онлайн-репозиторием), и PHP зависает в ожидании завершения установки, а поскольку требуется больше времени, используется больше памяти.

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

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

1. Там определенно более чем достаточно доступной памяти, и я также проверил php.ini на наличие всего, что, по моему мнению, может быть связано с этой проблемой. Сейчас я попробую установить систему вручную в системе, отличной от Plesk, просто чтобы немного сузить проблему.