Після переїзду на новий сервер з Debian 13 (Trixie) або оновлення PHP до версій 8.2+, багато власників WordPress-сайтів стикаються з критичною помилкою, яка повністю блокує доступ до ресурсу. Логи сервера при цьому показують наступне:
PHP Fatal error: Uncaught DateInvalidTimeZoneException: DateTimeZone::__construct(): Unknown or bad timezone (Europe/Kiev)
Чому це відбувається?
Проблема полягає в оновленні міжнародних стандартів та системних бібліотек tzdata. У сучасних дистрибутивах Linux застарілу транслітерацію Europe/Kiev було остаточно замінено на Europe/Kyiv. Оскільки WordPress або окремі плагіни (наприклад, Perfmatters) можуть зберігати стару назву в налаштуваннях, PHP не знаходить її в системі й перериває роботу скрипта.
Рішення 1: “Заплатка” у wp-config.php (найшвидший спосіб)
Якщо сайт “лежить” і ви не можете зайти в адмінку, додайте цей код у файл wp-config.php одразу після відкриваючого тегу <?php. Це змусить систему використовувати коректну назву до того, як виникне помилка:
// Виправлення конфлікту часових поясів для сучасних систем (Debian 13/Ubuntu 24.04)
if (date_default_timezone_get() === 'Europe/Kiev') {
date_default_timezone_set('Europe/Kyiv');
}
Рішення 2: Оновлення бази даних через SQL
Щоб виправити проблему фундаментально, необхідно оновити значення безпосередньо в таблиці налаштувань. Виконайте цей запит через phpMyAdmin або консоль Virtualmin/Webmin:
UPDATE wp_options SET option_value = 'Europe/Kyiv' WHERE option_name = 'timezone_string';
Рішення 3: Налаштування сервера
Переконайтеся, що ваш сервер також використовує актуальну зону. У терміналі виконайте:
sudo timedatectl set-timezone Europe/Kyiv
Після цього обов’язково перезапустіть службу PHP-FPM, щоб оновити кеш конфігурації:
systemctl restart php8.4-fpm