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

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

Я установил 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");
?>

1 ответ

Решение

Решение:

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, например, локаль, которую я исправил с помощью тех же процедур).

Другие вопросы по тегам