Меня интересует, как происходит процесс отладки в Друпале.
Если у меня в модуле ошибка, появляется 500 заголовок: Внутренняя ошибка сервера, я, получается, вообще не могу зайти ни на индекс-страницу, ни в админку.
Что делаю. Беру проблемный модуль, выбрасываю его временно из папки модулей, захожу в логи, смотрю, какая ошибка, исправляю ошибку, снова вставляю папку с модулем в sites/all/modules, пробую зайти на домашнюю страничку.
Мне кажется, надо делать не так.
Поделитесь, пожалуйста, опытом, как можно работать над ошибками, не трогая папку с модулем.
Комментарии
Не трогая папку? Никак. Надо модуль удалить по FTP, закачать, но не включать, проверить на наличие синтаксических ошибок. Если не поможет, то надо попробовать скачать новейшую версию модуля. Хотя может у хостера функция PHP, которую требует модуль отключена.
ненадо вводить в заблуждение.
модуль легко отключается в таблице {system}
а по сути вопроса, devel вам в помощь и лог системных ошибок друпала
в таблице {system} в поле status=0 - отключен, 1-включен.
devel подключила.
Что нашла:
- можно в любых количествах генерить пользователей, словари, ноды или удалять
- можно менять пользователей, у которых разный уровень доступа
- на страницу выплыла консоль Themer info - информация по теме
- можно прямо на страницу выводить запросы к базе, так видно, какой запрос "не пошел"
Что не нашла:
- должна быть быстрая чистка кэша. Где она настраивается?
Выходит, если модуль проблемный, то единственное место, где можно узнать, что там ошибка - это системный лог. На страницу никак нельзя вывести, что в строке такой-то такого-то файла содержится ошибка (как это делается в РНР)?
- должна быть быстрая чистка кэша.
В admin_menu есть "Flush all caches".
Спасибо. как-то пропустила. У меня это Empty cache.
включите блок devel на странице настройки блоков
Включила блок. Спасибо. То, что надо.
Включить в настройках движка вывод ошибок "на экран и в лог" вместо "только в лог" или можно в .htaccess
Наилучший вариант, предварительная отладка сайта на домашней машине или каком-то отдельном сервере, где PHP настроен под отладочный режим - с выводом ошибок в логи и на экран, с доступом к этим логам. На хостингах PHP обычно настроен так, чтобы не светить ошибки, даже если они есть - лучше пусть пользователь видит пустую страницу, чем техническое сообщение - ему эта информация не нужна.
Для удобства отладки в друпале - упомянутый модуль devel, при разработке своих модулей удобно ещё использовать отладчики, вроде xdebug.
php_value error_reporting “E_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
ошибки в лог-файл не пишутся и на экран тоже не выводятся.