Por que a extensão timezonedb não possui os dados mais recentes?

Por que a extensão timezonedb não possui os dados mais recentes?

Criei um Dockerfile e uso o arquivo wordpress:php7.4-apache.

Tentei instalar a extensão timezonedb usando 3 métodos diferentes separadamente.

Método 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

Método 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

Método 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"

Os 3 métodos funcionam corretamente. Após construir o contêiner docker, confirmo se a extensão está instalada e carregada corretamente verificando as informações do PHP:

CLI: Informações PHP - CLI

Rede: Informações PHP - Web

O timezonedb usa a versão mais recente que de acordo como site peclé a versão 2022.7.

Eu verifiqueio arquivo github timezonedb, e deve haver 597 fusos horários.

Mas, ao verificar a matriz timezonedb, vejo que ela contém apenas 420 fusos horários. Conteúdo da matriz TimezoneDB

Então, a questão é: por que é tão diferente? O que eu perdi aqui?

Qualquer tipo de ajuda seria muito apreciada.

Responder1

tudo está certo! apenas tente usar ALL_WITH_BCo grupo de fuso horário.

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/>';

Responder2

Acho que fundamentalmente isso se resume à tag php7.4-apacheem combinação com provavelmente apenas o que foi incluído na imagem do sistema operacional subjacente na época. (Como a pergunta na imagem diz que usa um banco de dados "externo", presumo que este seja o fornecido pelo sistema operacional.)

Se você der uma olhada rápidawordpressDocker Hubpágina, eles não têm php7.4-apacheem sua lista desuportadomais tags.
E procurando por este encontraeste commitno repositório correspondente, observando como o php 7.4 é EOL e, portanto, removeram o suporte para ele.

Ou seja, parece que tudo está desatualizado na imagem marcada desta forma, pois ela não é mais mantida, não se limitando ao banco de dados Olsen.

Acho que o lado da segurança desta situação provavelmente deveria ser visto como mais preocupante do que o desatualizado banco de dados Olsen.

Acho que provavelmente seria uma boa ideia escolher uma tag menos específica (mesmo latest, ou apache, ou ou 6ou 6-apacheo que quer que atenda aos seus requisitos), a menos que você realmente tenha requisitos muito específicos.
E se você tiver requisitos que o obriguem a usar alguma tag mais específica, você simplesmente terá que ter em mente que essa tag específica provavelmente terá uma vida útil mais curta do que uma mais geral e manter contato com seu status. .

Responder3

caso alguém se depare com o mesmo caso, espero que ajude.

Então, o desenvolvedor finalmente me procurou, dizendo que finalmente conseguiu obter os fusos horários corretos.

Ele disse que precisava usar o wrapper PHP para obter os fusos horários.

Isso confirma que a instalação do timezonedb está correta.

Gostaria de agradecer @ceejayoz e @håkan-lindqvist pela ajuda, agradeço muito, levei bastante tempo para resolver este caso.

informação relacionada