timezonedb 拡張機能に最新のデータがないのはなぜですか?

timezonedb 拡張機能に最新のデータがないのはなぜですか?

Dockerfile を作成し、 を使用しますwordpress:php7.4-apache

3 つの異なる方法を個別に使用して、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 情報をチェックして拡張機能が適切にインストールされ、ロードされていることを確認します。

CLI: 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と、おそらく当時の基盤となる OS イメージに含まれていたものの組み合わせに帰着すると思います。(イメージ内の質問では「外部」データベースを使用していると述べられているため、これは OS が提供するデータベースであると想定しています。)

ざっと見てみるとwordpressドッカーハブページには、php7.4-apacheリストにサポートされているタグはもうありません。
そしてこれを検索するとこのコミット対応するリポジトリでは、php 7.4 が EOL であるためサポートが削除されたことが記されています。

つまり、このようにタグ付けされたイメージは、Olsen データベースに限らず、メンテナンスされなくなったため、すべてが古くなっているようです。

この状況のセキュリティ面は、おそらく時代遅れのオルセン データベースよりも懸念すべきものだと思います。

非常に具体的な要件がない限り、あまり具体的でないタグ ( latest、 、apache、 など、要件に合うものなら6何でも) を選択するのがおそらく良い 考えだと思います。また、より具体的なタグを使用しなければならない要件がある場合は、そのような具体的なタグはより一般的なタグよりも有効期間が短い可能性が高いことを念頭に置き、そのステータスを常に把握しておく必要があります。6-apache

答え3

誰かが同じケースに遭遇した場合に備えて、これが役立つことを願っています。

そこで、開発者がようやく私に連絡してきて、ようやく正しいタイムゾーンを取得できたと言ってきました。

彼は、タイムゾーンを取得するには PHP ラッパーを使用する必要があると言いました。

これにより、timezonedb のインストールが正しいことが確認されます。

@ceejayoz と @håkan-lindqvist の助力に感謝します。本当に感謝しています。このケースを解決するのにかなり時間がかかりました。

関連情報