¿Por qué la extensión timezonedb no tiene los datos más recientes?

¿Por qué la extensión timezonedb no tiene los datos más recientes?

Creé un Dockerfile y uso el archivo wordpress:php7.4-apache.

Intenté instalar la extensión timezonedb usando 3 métodos diferentes por separado.

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"

Los 3 métodos funcionan correctamente. Después de construir el contenedor acoplable, confirmo que la extensión está instalada y cargada correctamente verificando la información de PHP:

CLI: Información PHP - CLI

Web: Información PHP - Web

Timezonedb utiliza la última versión que, segúnel sitio pecles la versión 2022.7.

He comprobadoel archivo github timezonedb, y debería haber 597 zonas horarias.

Pero, al verificar la matriz timezonedb, puedo ver que solo contiene 420 zonas horarias. Contenido de la matriz TimezoneDB

Entonces la pregunta es ¿por qué es tan diferente? ¿Qué me perdí aquí?

Cualquier tipo de ayuda sería muy apreciada.

Respuesta1

¡todo esta bien! Simplemente intenta usar ALL_WITH_BCel grupo de zona horaria.

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

Respuesta2

Creo que fundamentalmente esto se reduce a la etiqueta php7.4-apacheen combinación con probablemente lo que se incluyó en la imagen del sistema operativo subyacente en ese momento. (Como dice la pregunta en la imagen, utiliza una base de datos "externa", supongo que esta es la proporcionada por el sistema operativo).

Si echas un vistazo rápidowordpressDockerHubpágina, no tienen php7.4-apacheen su lista desoportadoetiquetas más.
Y buscando esto se encuentraeste compromisoen el repositorio correspondiente, notando que php 7.4 está EOL y por lo tanto eliminaron el soporte para él.

Es decir, parece que todo está desactualizado en la imagen etiquetada de esta manera porque ya no se mantiene, y no se limita a la base de datos de Olsen.

Creo que el aspecto de seguridad de esta situación probablemente debería verse como más preocupante que la obsoleta base de datos Olsen.

Creo que probablemente sería una buena idea elegir una etiqueta menos específica (incluso latest, o apache, o 6o 6-apacheo lo que sea que se ajuste a sus requisitos) a menos que realmente tenga requisitos muy específicos.
Y si tiene requisitos que le obligan a utilizar alguna etiqueta más específica, simplemente tendrá que tener en cuenta que dicha etiqueta específica probablemente tendrá una vida útil más corta que una más general y mantenerse en contacto con su estado. .

Respuesta3

En caso de que alguien se encuentre con el mismo caso, espero que esto ayude.

Entonces, el desarrollador finalmente se acercó a mí y me dijo que finalmente logró obtener las zonas horarias correctas.

Dijo que tenía que usar el contenedor PHP para obtener las zonas horarias.

Esto confirma que la instalación de timezonedb es correcta.

Me gustaría agradecerles a @ceejayoz y @håkan-lindqvist por su ayuda. Realmente lo aprecio, me tomó bastante tiempo resolver este caso.

información relacionada