Ошибка “Unknown or bad timezone” в Webasyst - как исправить - Создание и продвижение сайтов в Санкт-Петербурге
8 (812) 629-14-61
info@antipov-design.ru

Как-то раз обратился клиент с жалобой на то, что после обновления фреймворка системы управления Webasyst, у него при открытии сайта или админки выскакивает ошибка

DateTimeZone::__construct(): Unknown or bad timezone (-) code 0
<h3>/var/www/admin/data/www/example.ru/wa-system/waSystem.class.php (497)</h3>
## /var/www/admin/data/www/example.ru/wa-system/waSystem.class.php(497)
#0 /var/www/admin/data/www/example.ru/index.php(7): waSystem->dispatch()
#1 {main}

Next Exception with message ‘DateTimeZone::__construct(): Unknown or bad timezone (-)’:
## /var/www/admin/data/www/example.ru/wa-system/datetime/waDateTime.class.php(152)
#0 /var/www/admin/data/www/example.ru/wa-system/datetime/waDateTime.class.php(152): DateTimeZone->__construct(‘-‘)
#1 /var/www/admin/data/www/example.ru/wa-system/datetime/waDateTime.class.php(286): waDateTime::date(‘j f Y’, ‘2016-12-30 15:5…’, ‘-‘, ‘ru_RU’)
#2 /var/www/admin/data/www/example.ru/wa-system/helper/datetime.php(5): waDateTime::format(‘humandate’, ‘2016-12-30 15:5…’, NULL, ‘ru_RU’)
#3 /var/www/admin/data/www/example.ru/wa-system/vendors/smarty-plugins/modifier.wa_date.php(24): wa_date(‘humandate’, ‘2016-12-30 15:5…’, NULL, ‘ru_RU’)

И дальше куча подобного кода… С первого взгляда ответ был вроде бы очевиден — на сервере или в базе данных что-то с временной зоной. Начинаем искать всевозможные решения, конечно же первое, что приходит на ум — выставить вручную временную зону.

Ошибка “Unknown or bad timezone” в Webasyst. Решение проблемы №1

Открываем файл “wa-config/SystemConfig.class.php” и после открывающего тега “<?php” на следующей строке прописываем код

date_default_timezone_set(‘Europe/Moscow’);

Как вы уже наверное догадались, эта функция PHP позволяет принудительно выставить временную зону. Список всех зон Европы можно посмотреть здесь — Увы, но в моем случае это не помогло.

Ошибка “Unknown or bad timezone” в Webasyst. Решение проблемы №2

Открываем .htaccess и прописываем туда

php_value date.timezone ‘Europe/Moscow’

То же самое можно попробовать прописать в php.ini, если у вас VPS. Теперь перегружаем сайт, в моем случае и это решение ничем не помогло, ровно как и обращение в тех. поддержку. Что ж, продолжаем искать, сайт клиента не работает и деньги теряются!

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

Ошибка “Unknown or bad timezone” в Webasyst [РЕШЕНО]

Я хоть и работал перед этим с Webasyst, особо в базе не копался и уж тем более не искал там настройки временной зоны, как таковой глобальной настройки там нет, но, зона указывается в таблице пользователей и для каждого пользователя своя, просматривая сотни записей, я обнаружил, что у одного из них в колонке временной зоны прописано что-то совсем к ней не относящееся, более того, все данные пользователя «поехали» — часть полей была пустая, часть заполнена со смещением, т.е. имя в фамилии, фамилия в отчестве и т.д. Сделав бэкап базы, я удалил этого пользователя и вуаля! Сайт работает! В итоге оказалось, что ошибка при обновлении снесла ⅔ пользователей базы, но тут уже ничего сделать было нельзя, у горе-хостера не было бэкапов вообще. Так что периодическое создание резервной копии сайта — основа вашего спокойствия в случаях таких форс-мажоров!

Если у вас возникла проблема с сайтом или просто нужна его поддержка — обращайтесь!