Почему расширение timezonedb не содержит последних данных?

Почему расширение timezonedb не содержит последних данных?

Я создал Dockerfile и использую wordpress:php7.4-apache.

Я пробовал установить расширение timezonedb тремя разными способами по отдельности.

Метод 1.

RUN docker-php-source extract \
    && pecl bundle -d /usr/src/php/ext timezonedb \
    && docker-php-ext-configure timezonedb \
    && docker-php-ext-install -j$(nproc) timezonedb \
    && docker-php-source delete

Метод 2.

RUN mkdir -p /usr/local/src/pecl \
    && pecl bundle -d /usr/local/src/pecl timezonedb \
    && docker-php-ext-configure /usr/local/src/pecl/timezonedb \
    && docker-php-ext-install -j$(nproc) /usr/local/src/pecl/timezonedb \
    && rm -rf /usr/local/src/pecl

Метод 3.

RUN apt-get -y install gcc make autoconf libc-dev pkg-config \
    && pecl install timezonedb \
    && bash -c "echo extension=timezonedb.so > /usr/local/etc/php/conf.d/docker-php-ext-timezonedb.ini"

Все 3 метода работают правильно. После сборки контейнера Docker я подтверждаю, что расширение установлено и загружено правильно, проверив информацию PHP:

Интерфейс командной строки: Информация о PHP - CLI

Веб: Информация о PHP - Веб

Timezonedb использует последнюю версию, которая согласносайт peclэто версия 2022.7.

Я проверилфайл timezonedb github, и должно быть 597 часовых поясов.

Но, проверив массив timezonedb, я вижу, что он содержит только 420 часовых поясов. Содержимое массива TimezoneDB

Итак, вопрос в том, почему все так по-другому? Что я тут упустил?

Любая помощь будет высоко оценена.

решение1

все в порядке! просто попробуйте использовать ALL_WITH_BCгруппу часовых поясов.

https://www.php.net/manual/en/class.datetimezone.php

echo 'ALL : ';
echo count(timezone_identifiers_list(DateTimeZone::ALL)); // -> result : 425
echo '<br/>';

echo 'ALL_WITH_BC : ';
echo count(timezone_identifiers_list(DateTimeZone::ALL_WITH_BC)); // -> result : 593
echo '<br/>';

решение2

Я думаю, что по сути это сводится к тегу php7.4-apacheв сочетании с тем, что, вероятно, было включено в базовый образ ОС в то время. (Поскольку в вопросе на изображении говорится, что используется «внешняя» база данных, я предполагаю, что это база данных, предоставленная ОС.)

Если вы быстро посмотрите наwordpressДокерхабстраница, у них нет php7.4-apacheв спискеподдерживаетсятеги больше.
И поиск этого находитэто совершитьв соответствующем репозитории, отметив, что PHP 7.4 устарел, и поэтому его поддержка прекращена.

То есть, похоже, что в изображении, помеченном таким образом, все устарело, поскольку оно больше не поддерживается, и это касается не только базы данных Олсена.

Я думаю, что аспект безопасности в этой ситуации, вероятно, должен вызывать больше беспокойства, чем устаревшая база данных Олсена.

Я думаю, что, вероятно, было бы хорошей идеей выбрать менее конкретный тег (даже latest, или apache, или 6или 6-apacheили что-то еще, что может соответствовать вашим требованиям), если у вас на самом деле нет очень конкретных требований.
И если у вас есть требования, которые заставляют вас использовать какой-то более конкретный тег, вам просто придется иметь в виду, что такой конкретный тег, вероятно, будет иметь более короткий срок службы, чем более общий, и оставаться в курсе его статуса.

решение3

Надеюсь, это поможет, если кто-то столкнется с такой же ситуацией.

Итак, разработчик наконец связался со мной и сказал, что ему наконец удалось получить правильные часовые пояса.

Он сказал, что ему пришлось использовать PHP-оболочку для получения часовых поясов.

Это подтверждает правильность установки timezonedb.

Я хотел бы поблагодарить вас @ceejayoz и @håkan-lindqvist за вашу помощь, я действительно это ценю, мне потребовалось довольно много времени, чтобы раскрыть это дело.

Связанный контент