"Сайт обнаружил непредвиденную ошибку. Пожалуйста, попробуйте позже."


27

У меня есть эта ошибка с Drupal 7

  1. Как я могу получить больше информации об этой ошибке? Любой отчет, любой журнал где-нибудь? Ничего в php-ошибках.

  2. как я могу отключить это сообщение и получить более полезное для отладки?

Примечание : мой вопрос НЕ "как я могу решить эту проблему"

Ответы:


27

Эта ошибка происходит из-за необработанного исключения PHP . Drupal перехватывает исключения, поэтому пользователю не отображается сообщение об ошибке PHP. Вы можете найти информацию об исключении в ссылке «Недавние сообщения журнала» в отчетах (или попробуйте этот путь: / admin / reports / dblog). Убедитесь, что модуль «Регистрация в базе данных» включен, так как этот модуль предоставляет этот отчет.

Вы увидите все внутренние сообщения, которые были сгенерированы. Отфильтруйте по типу 'PHP' и серьезности 'error', и вы, вероятно, найдете сообщение о необработанном исключении. Это вызывает вашу проблему. Теперь у вас есть больше информации, чтобы вы могли это исправить.


Хорошо, спасибо, так нет ли готового способа изменить это поведение на более отладочное? (например ... отображение исключения на экране)
— theredled

Нет, AFAIK, нет простого способа сделать это. Вы можете попробовать установить собственный обработчик исключений (используя стандартную функцию PHP set_exception_handler), но остерегайтесь побочных эффектов.
— Санзанте

7
Отличная идея, чтобы проверить /admin/reports/dblog. Если, конечно, вы даже не можете войти, потому что эта глупая ошибка скрыла весь ваш сайт drupal!
— g33kz0r

Я сам видел эту ошибку с помощью viewreference «FieldException: попытка создать поле неизвестного ...» Решение для меня, включающее drush en viewreference, сработало - я работаю с другими людьми и вытаскиваю их обновления git, поэтому я получаю код модуля, но я необходимо включить модуль (так как включение включено в базу данных, которую я не получаю в запросе на извлечение, мы используем функции). Надеюсь, что это помогает другим людям.
— therobyouknow

4
@ g33kz0r: Вы можете использовать сторожевое шоу drush для просмотра сообщений об ошибках или, если ваш сайт полностью не работает, проверить сторожевую таблицу в базе данных, где хранятся эти сообщения.
— Санзанте

15

Drupal 6 & 7

Если вы используете Drush, просто делайте drush vset error_level 1.

В противном случае перейдите к « /admin/config/development/logging» и измените настройку на «Ошибки и предупреждения».

Drupal 8

Вместо drush vset/ vget/ vdelвы можете использовать cset/ cget/ cdelдля значений конфигурации и sset/ sget/ sdelдля значений состояния.


12

ПРОСТОЙ СПОСОБ

Отредактируйте ваш файл settings.php и добавьте туда строку (особенно на вашем сайте разработчиков, вы можете просто сохранить это)

$conf['error_level'] = 1;

drush требует, чтобы вы были в состоянии загрузить базу данных.


ЛУЧШИЙ ответ. Это сэкономило мое время.
— Остин

6

EASY WAY для Drupal 8 ,

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

Откройте файл /sites/default/settings.phpс помощью редактора или FTP-клиента и добавьте следующую строку:

$config['system.logging']['error_level'] = 'verbose';

После перезагрузки страницы вы увидите полное сообщение об ошибке вместо общего: «На веб-сайте произошла непредвиденная ошибка. Пожалуйста, попробуйте позже."


2

Эта ошибка исходит от _drupal_log_error().

В качестве быстрого исправления для разработки вы можете обновить эту функцию, чтобы предоставить более подробные сообщения об ошибках, но обязательно убедитесь, что вы изменили ее, прежде чем сайт заработает :)


0

Проверьте дблог. Это лучшее место для поиска ошибок на веб-сайте Drupal. Также проверьте консоль JS, чтобы выбрать дополнительные ошибки в вашем браузере.


Спасибо за dblog (/ admin / reports / dblog). Теперь, как я могу отключить это сообщение и получить более полезное для отладки?
— theredled

1
Во всяком случае, я не думаю, что ошибка JS может вызвать эту ошибку сервера ...
— theredled

0

Проверьте в watchdogтаблице в MySQL. Вы можете скачать Blob ( variablesстолбец) и открыть его с помощью Блокнота. Он покажет вам сериализованный объект с вашей ошибкой.


0

Попробуй это:

уровень ошибки

admin menu equivalent: admin/config/development/logging
drush command: drush vset -y error_level <value>
values:
    0: none
    1: errors and warnings
    2: all 

0

Чтобы сделать ошибки видимыми на вашем сайте Drupal, найдите файл index.php в главном каталоге вашего сайта. Откройте index.php и добавьте этот код непосредственно перед самой первой строкой файла:

error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 

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


0

Это старая тема, но, поскольку я недавно столкнулся с этой же проблемой, предоставил свои материалы. Я не смог получить доступ ни к одному из путей Drupal, так как всегда получал эту ошибку, несмотря ни на что. Это начало происходить после того, как я обновил представление, поэтому я знал, что нужно сделать, но не смог открыть представление. Таким образом я просмотрел логи сервера Apache. Помимо приведенного выше решения, такого как просмотр drush и dblogs, вместо этого может быть полезно просмотреть журналы сервера Apache, особенно когда вы не можете получить доступ ни к одному из путей приложения. Они обычно присутствуют в файле \ logs \ error.log и содержат подробные данные о необработанном исключении, месте, где оно было сгенерировано и т. Д. В качестве быстрого исправления вы можете прокомментировать код, генерирующий исключение, и обновить приложение. В моем случае я прокомментировал пост кода, который я смог получить в представлении и сделать необходимые обновления. Надеюсь, что это поможет кому-то в подобных ситуациях


0

Это очень интересно, но если вы открываете исходный код страницы (CTRL-U), тогда все предупреждения и сообщения об ошибках присутствуют, они просто находятся в скрытом элементе. Ищите element-invisible.

Редактировать: $conf['error_level'] = 1;должен быть также помещен в settings.phpфайл.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.