Я создал модуль через консоль Drupal, к сожалению, он не был помещен в собственную папку, а прямо в нее /modules/custom
. Прежде чем я заметил, куда он ушел, я включил модуль.
В Drupal 6/7 это было легко исправить - я мог буквально просто поместить файлы по правильному пути, очистить кеш (возможно, перестроить реестр, это не было точной наукой), и все было хорошо.
То же самое не верно для Drupal 8; Я переместил файлы в подпапку, перестроил кеш, и все запросы говорят мне, что Drupal не может включить требуемый файл. Конкретный файл - это блочный класс, и путь, который пытается найти Drupal, находится там, где он был раньше , а не туда, куда я его переместил.
Часть кода возражает против Symfony ApcClassLoader
, поэтому я думаю, мне нужно очистить что-то, что немного выше головы Drupal, чтобы обновить эту ссылку на путь.
Как я могу это сделать?
Деинсталляция и переустановка модуля действительно работает, но как только будут сохранены важные данные, это не вариант.
Я был неправ, удаление и повторная установка не является жизнеспособным вариантом. После удаления и переустановки Drupal больше не может выбирать пользовательские блоки, определенные модулем. Я предполагаю, что ссылка кэшируется где-то, что не очищается при удалении модуля. Просто нужно выяснить, где это и как это очистить ...
ApcClassLoader::findFile()
получение неправильного пути отapc_fetch()
, или декорированного загрузчик классов возвращение неправильного пути?Ответы:
Просто перезапустите Apache. Кэш APC будет перестроен.
Вы также можете попробовать нажать rebuild.php или запустить drush cr. Все они пытаются очистить кэш APC.
источник
Другое решение находится в вашем settings.php:
источник
Вы должны очистить друпальный кеш. Вот как это сделать с помощью drush:
источник