#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, просто чтобы немного сузить проблему.