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는 다음과 같은 최신 버전을 사용합니다.페클 사이트버전입니다 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 데이터베이스에 국한되지 않고 더 이상 유지 관리되지 않으므로 이러한 방식으로 태그가 지정된 이미지의 모든 것이 오래된 것으로 보입니다.

나는 이 상황의 보안 측면이 오래된 Olsen 데이터베이스보다 더 우려되는 것으로 보아야 한다고 생각합니다.

실제로 매우 구체적인 요구 사항이 있는 경우가 아니라면 덜 구체적인 태그( latest, 또는 apache, 또는 6요구 사항에 맞는 태그라도 무엇이든) 를 선택하는 것이 아마도 좋은 생각일 것이라고 생각합니다 . 그리고 좀 더 구체적인 태그를 사용해야 하는 요구 사항이 있는 경우, 그러한 특정 태그는 일반적인 태그보다 수명이 짧을 수 있다는 점을 염두에 두고 해당 태그의 상태를 계속 확인해야 합니다. .6-apache

답변3

누군가가 같은 경우에 걸려 넘어지면 이것이 도움이되기를 바랍니다.

그래서 개발자는 마침내 나에게 연락하여 마침내 올바른 시간대를 얻을 수 있었다고 말했습니다.

그는 시간대를 얻으려면 PHP 래퍼를 사용해야 한다고 말했습니다.

이는 timezonedb 설치가 올바른지 확인합니다.

도움을 주신 @ceejayoz 및 @håkan-lindqvist에게 감사드립니다. 정말 감사합니다. 이 사건을 해결하는 데 꽤 시간이 걸렸습니다.

관련 정보