Position actuelle: Accueil> Derniers articles> Dans un environnement de conteneur Docker, comment utiliser la fonction Timezone_version_get pour détecter si Tzdata est installé correctement?

Dans un environnement de conteneur Docker, comment utiliser la fonction Timezone_version_get pour détecter si Tzdata est installé correctement?

gitbox 2025-08-28

OK, je comprends, j'écrirai directement un article PHP complet, ajouterai un contenu non pertinent avant et après au besoin et séparer le texte avec une ligne horizontale. Voici un exemple d'article:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Rien à l&#39;avant PHP Exemple de code</span></span><span>
</span><span><span class="hljs-variable">$dummyArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">range</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">shuffle</span></span><span>(</span><span><span class="hljs-variable">$dummyArray</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$dummyArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$num</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"nombre <span class="hljs-subst">$num</span></span></span><span> Traité\n";
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"----------------------------------------\n"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

exister Docker Dans l&#39;environnement des conteneurs,Comment utiliser timezone_version_get Détection de fonction tzdata Est-il installé correctement?

exister使用 PHP Construire Docker Lorsque le conteneur,La correction des fonctions liées au temps dépend souvent de tzdata Sac(Base de données du fuseau horaire)。si tzdata Non installé correctement ou manquant,Peut causer `</span><span><span class="hljs-title function_ invoke__">date</span></span><span>()`、`DateTime` et les fonctions connexes renvoient le temps d&#39;erreur,Affecter l&#39;exploitation forestière、Tâches de synchronisation et logique d&#39;application。

Heureusement,PHP Fourni `</span><span><span class="hljs-title function_ invoke__">timezone_version_get</span></span><span>()` fonction,Il peut être utilisé pour détecter le courant PHP 环境中Base de données du fuseau horaire的版本,Confirmation indirecte tzdata 是否存exister并正确加载。

</span><span><span class="hljs-comment">### 1. examiner tzdata Installation</span></span><span>

exister PHP Dans le script,Vous pouvez utiliser le code suivant:

```php
</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$tzVersion</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_version_get</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$tzVersion</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"当前Base de données du fuseau horaire版本: "</span></span><span> . </span><span><span class="hljs-variable">$tzVersion</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Base de données du fuseau horaire未正确加载,请examiner tzdata Installer。\n"</span></span><span>;
}
</span></span>
  • Si un numéro de version est sorti (par exemple, 2023.6 ), cela signifie que Tzdata est installé et disponible.

  • Si une erreur vide ou une erreur est renvoyée, cela signifie que la base de données du fuseau horaire n'est pas chargée et doit être installée dans l'image Docker.

2. Assurez-vous que Tzdata est installé dans Dockerfile

Pour les images basées sur Debian ou Ubuntu, vous pouvez les ajouter dans le dockerfile:

 <span>RUN apt-get update &amp;&amp; apt-get install -y tzdata
</span>

Pour la mise en miroir alpin:

 <span>RUN apk add --no-cache tzdata
</span>

Après l'installation, il est préférable de reconstruire l'image et de le vérifier à nouveau via Timezone_version_get () .

3. Définissez le fuseau horaire par défaut

Même si le tzdata est installé correctement, il est recommandé de spécifier le fuseau horaire par défaut dans la configuration PHP pour éviter de s'appuyer sur les paramètres du système de conteneurs:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Heure actuelle: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>

4. Résumé

En détectant Tzdata par Timezone_version_get () , vous pouvez rapidement confirmer si la base de données du fuseau horaire dans le conteneur Docker est disponible. En combinant correctement l'installation de tzdata dans dockerfile et définir des fuseaux horaires par défaut dans PHP, diverses erreurs de temps causées par des problèmes de fuseau horaire peuvent être évitées et la stabilité de l'application peut être améliorée.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"----------------------------------------\n"</span></span><span>;

</span><span><span class="hljs-comment">// La queue n&#39;est pas pertinente PHP Exemple de code</span></span><span>
</span><span><span class="hljs-variable">$randomStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-title function_ invoke__">random_bytes</span></span><span>(</span><span><span class="hljs-number">4</span></span><span>));
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Déboguer la marque: <span class="hljs-subst">$randomStr</span></span></span><span>\n";
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>