Нестабильно работает мультисайтинг drupal

Главные вкладки

Аватар пользователя ExPande ExPande 9 января 2017 в 14:05

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

2016/12/28 12:01:55 [error] 1321#0: *160155 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Unsupported operand types in /data/web/project.dev/www/modules/field/field.info.class.inc on line 495
PHP message: PHP Stack trace:
PHP message: PHP   1. {main}() /data/web/project.dev/www/index.php:0
PHP message: PHP   2. menu_execute_active_handler() /data/web/project.dev/www/index.php:21
PHP message: PHP   3. drupal_deliver_page() /data/web/project.dev/www/includes/menu.inc:542
PHP message: PHP   4. drupal_deliver_html_page() /data/web/project.dev/www/includes/common.inc:2621
PHP message: PHP   5. drupal_render_page() /data/web/project.dev/www/includes/common.inc:2748
PHP message: PHP   6. admin_menu_page_build() /data/web/project.dev/www/includes/common.inc:5879
PHP message: PHP   7. admin_menu_output() /data/web/project.dev/www/sites/sub.project.dev/modules/admin_menu/admin_menu.module:201
PHP message: PHP   8. admin_menu_tree() /data/web/project.dev/www/sites/sub.project.dev/modules/admin_menu/admin_menu.module:508
PHP message: PHP   9. module_invoke_all() /data/web/project.dev/www/sites/sub.project.dev/modules/admin_menu/admin_menu.inc:18
PHP message: PHP  10. call_user_func_array() /data/web/project.dev/www/includes/module.inc:957
PHP message: PHP  11. field_ui_admin_menu_map() /data/web/pproject.dev/www/includes/module.inc:957
PHP message: PHP  12. field_info_instances() /data/web/project.dev/www/sites/sub.project.dev/modules/admin_menu/admin_menu.map.inc:87
PHP message: PHP  13. FieldInfo->getBundleInstances() /data/web/project.dev/www/modules/field/field.info.inc:606
PHP message: PHP  14. FieldInfo->prepareField() /data/web/project.dev/www/modules/field/field.info.class.inc:405" while reading response header from upstream, client: 10.101.0.11, server: sub.project.dev, request: "GET /admin/content HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "sub.project.dev", referrer: "https://sub.project.dev/admin/content"

Drupal версии 7.53
С чем это может быть связано ?

Сайт на поддомене был пересоздан (удалено содержимое папки sub.project.dev, создан новый settings.php с новым префиксом таблиц для повторной установки)
Начала появляться следующая проблема

2016/12/30 17:31:02 [error] 1725#0: *9067 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Call to undefined function field_attach_load() in /data/web/project.dev/www/includes/entity.inc on line 354
PHP message: PHP Stack trace:
PHP message: PHP   1. {main}() /data/web/project.dev/www/index.php:0
PHP message: PHP   2. menu_execute_active_handler() /data/web/project.dev/www/index.php:21
PHP message: PHP   3. call_user_func_array() /data/web/project.dev/www/includes/menu.inc:527
PHP message: PHP   4. user_page() /data/web/project.dev/www/includes/menu.inc:527
PHP message: PHP   5. menu_execute_active_handler() /data/web/project.dev/www/modules/user/user.pages.inc:596
PHP message: PHP   6. menu_get_item() /data/web/project.dev/www/includes/menu.inc:522
PHP message: PHP   7. _menu_translate() /data/web/project.dev/www/includes/menu.inc:482
PHP message: PHP   8. _menu_load_objects() /data/web/project.dev/www/includes/menu.inc:771
PHP message: PHP   9. user_load() /data/web/project.dev/www/includes/menu.inc:603
PHP message: PHP  10. user_load_multiple() /data/web/project.dev/www/modules/user/user.module:366
PHP message: PHP  11. entity_load() /data/web/project.dev/www/modules/user/user.module:291
PHP message: PHP  12. DrupalDefaultEntityController->load() /data/web/project.dev/www/includes/common.inc:8005
PHP message: PHP  13. UserController->attachLoad() /data/web/project.dev/www/includes/entity.inc:206
PHP message: PHP  14. DrupalDefaultEntityController->attachLoad() /data/web/project.dev/www/modules/user/user.module:337" while reading response header from upstream, client: 10.101.0.11, server: sub.project.dev, request: "GET /?q=user HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "sub.project.dev", referrer: "https://sub.project.dev/admin"

Комментарии

Аватар пользователя postgres postgres 9 января 2017 в 14:22

Call to undefined function field_attach_load() -
вызов функции из ядра сайта которая еще по каким то причинам не загружена...

удалите все таблицы с префиксом cache
очистите каталог tmp
и выполните /update.php

Аватар пользователя Afftobus Afftobus 9 января 2017 в 18:18

Как я уже писал ранее, проблема была в том, что в функции prepareField(), принимающей на вход $field, такие необходимые данные как $field['settings'] и $field['storage']['settings'] по какой-то причине приезжают как NULL. Соответственно, PHP никак не может переварить строки
$field['settings'] += field_info_field_settings($field['type']);
и
$field['storage']['settings'] += field_info_storage_settings($field['storage']['type']);
и отсюда получается первая из вышеуказанных ошибок.

Проблема решается заглушкой в виде изменения кода на следующий:
if (!$field['settings']) //KOSTYL.php
$field['settings'] = field_info_field_settings($field['type']); //KOSTYL.php
else //KOSTYL.php

$field['settings'] += field_info_field_settings($field['type']);

//KOSTYL.php
if (!$field['storage']['settings']) //KOSTYL.php
$field['storage']['settings'] = field_info_storage_settings($field['storage']['type']);//KOSTYL.php
else //KOSTYL.php

$field['storage']['settings'] += field_info_storage_settings($field['storage']['type']);

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