
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:
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.
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_BC
o 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-apache
em 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ápidawordpress
Docker Hubpágina, eles não têm php7.4-apache
em 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 6
ou 6-apache
o 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.