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

27

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

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

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

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

theredled
источник

Ответы:

27

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

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

sanzante
источник
Хорошо, спасибо, так нет ли готового способа изменить это поведение на более отладочное? (например ... отображение исключения на экране)
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';

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

4k4
источник
2

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

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

Клайв
источник
0

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

Binny
источник
Спасибо за 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 
ravyg
источник
0

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

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

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

Chetabahana
источник
0

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

МАЙ
источник
0

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

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

endo64
источник