Назад | Перейти на главную страницу

Ошибка PHP 500: база данных часовых поясов повреждена - этого не должно быть * никогда *

У меня есть свежая установка Ubuntu Server 16.04 amd64 с apache 2.4.18 и php 7.0.

Я chrooted Apache с mod_env и ChrootDir / var / www в /etc/apache2/apache2.conf и насколько я знаю, здесь проблема. Я хочу выполнить установку NexctCloud 11, но при первом запуске выдает ошибку 500.

Журнал ошибок Apache:

[Fri Mar 17 08:21:22.262901 2017] [:error] [pid 31480] [client 193.175.51.226:55749] PHP Notice:  date_default_timezone_set(): Timezone ID 'UTC' is invalid in /html/sub.example.com/public_html/lib/base.php on line 637, referer: https://sub.example.com/
[Fri Mar 17 08:21:22.266581 2017] [:error] [pid 31480] [client 193.175.51.226:55749] PHP Warning:  DateTime::createFromFormat(): Invalid date.timezone value 'Europe/Berlin', we selected the timezone 'UTC' for now. in /html/sub.example.com/public_html/lib/private/Log/File.php on line 85, referer: https://sub.example.com/
[Fri Mar 17 08:21:22.266610 2017] [:error] [pid 31480] [client 193.175.51.226:55749] PHP Fatal error:  DateTime::createFromFormat(): Timezone database is corrupt - this should *never* happen! in /html/sub.example.com/public_html/lib/private/Log/File.php on line 85, referer: https://sub.example.com/

Если я деактивирую Chroot, все в порядке, но я предпочитаю другое решение, в котором мне не нужно деактивировать chroot.

Я нашел одно предложение в сети: http://ivanbayan.com/index.php/2013/06/26/how-to-fix-timezone-database-is-corrupt-this-should- Never-happen/ который я пробовал (настроен для моего php7), но это не решило проблему. Также я попробовал несколько предложений отсюда, не решив свою проблему: Запуск PHP: база данных часовых поясов повреждена

// Изменить: похоже, проблема не только в NextCloud. Это проблема использования функции date () в PHP. Следующий сценарий приводит к той же ошибке:

<?php
date_default_timezone_set('Europe/Berlin');

echo date("l");
?>

Решение:

mkdir -p /var/www/usr/lib/locale
mkdir -p /var/www/usr/share/zoneinfo

cd /var/www
cp /etc/localtime etc/localtime
cp /usr/share/zoneinfo/ usr/share/zoneinfo/

Это устраняет проблему (было больше ошибок с NectCloud и Chroot, например, локаль, которую я исправил с помощью тех же процедур).