Отладка в Друпале

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

Аватар пользователя lena_elena4 lena_elena4 15 марта 2009 в 0:03

Меня интересует, как происходит процесс отладки в Друпале.
Если у меня в модуле ошибка, появляется 500 заголовок: Внутренняя ошибка сервера, я, получается, вообще не могу зайти ни на индекс-страницу, ни в админку.
Что делаю. Беру проблемный модуль, выбрасываю его временно из папки модулей, захожу в логи, смотрю, какая ошибка, исправляю ошибку, снова вставляю папку с модулем в sites/all/modules, пробую зайти на домашнюю страничку.
Мне кажется, надо делать не так.
Поделитесь, пожалуйста, опытом, как можно работать над ошибками, не трогая папку с модулем.

Комментарии

Аватар пользователя oODeathStormOo oODeathStormOo 15 марта 2009 в 13:15

Не трогая папку? Никак. Надо модуль удалить по FTP, закачать, но не включать, проверить на наличие синтаксических ошибок. Если не поможет, то надо попробовать скачать новейшую версию модуля. Хотя может у хостера функция PHP, которую требует модуль отключена.

Аватар пользователя beerman beerman 15 марта 2009 в 13:19

ненадо вводить в заблуждение.
модуль легко отключается в таблице {system}

а по сути вопроса, devel вам в помощь и лог системных ошибок друпала

Аватар пользователя lena_elena4 lena_elena4 15 марта 2009 в 15:14

в таблице {system} в поле status=0 - отключен, 1-включен.
devel подключила.
Что нашла:
- можно в любых количествах генерить пользователей, словари, ноды или удалять
- можно менять пользователей, у которых разный уровень доступа
- на страницу выплыла консоль Themer info - информация по теме
- можно прямо на страницу выводить запросы к базе, так видно, какой запрос "не пошел"

Что не нашла:
- должна быть быстрая чистка кэша. Где она настраивается?

Выходит, если модуль проблемный, то единственное место, где можно узнать, что там ошибка - это системный лог. На страницу никак нельзя вывести, что в строке такой-то такого-то файла содержится ошибка (как это делается в РНР)?

Аватар пользователя axel axel 15 марта 2009 в 17:41

Включить в настройках движка вывод ошибок "на экран и в лог" вместо "только в лог" или можно в .htaccess

php_value error_reportingE_ALL & ~E_NOTICE

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

Для удобства отладки в друпале - упомянутый модуль devel, при разработке своих модулей удобно ещё использовать отладчики, вроде xdebug.

Аватар пользователя lena_elena4 lena_elena4 15 марта 2009 в 18:51

php_value error_reportingE_ALL & ~E_NOTICE

В .htaccess лучше писать не символьные значения, а цифровые.
Например, вывод всех типов диагностики (макс.уровень) - E_ALL пишется вот так:
php_value error_reporting 65535
А то, что вы привели пишется уже непосредственно в скрипте(error_reporting (E_ALL & ~E_NOTICE)).

Я еще до того, как создать тему, проверила, что если в файл .htaccess Друпала, кроме уровня диагностики, поставить путь к файлу логов и флаги:
php_value error_log "путь/log/errors.txt"
php_flag log_errors on
php_flag display_errors on

ошибки в лог-файл не пишутся и на экран тоже не выводятся.