Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
ENV LANG=fr_FR.UTF-8 dans un Dockerfile transmet une variable d’environnement ; cela ne garantit ni que la locale française est installée dans l’image, ni que le processus PHP l’a appliquée. Pour trouver pourquoi PHP voit C.UTF-8, vérifiez successivement la locale disponible dans le conteneur, les variables réellement reçues par PHP et le résultat de setlocale().
Pourquoi la valeur LANG ne suffit pas
Trois états différents sont souvent confondus : la valeur de LANG dans l’environnement, les données de locale installées dans l’image et la locale effectivement utilisée par le processus PHP. La directive Docker ENV définit une variable conservée dans l’environnement de l’image et des conteneurs qui en sont issus, mais elle ne génère pas les données système de la locale correspondante (documentation Docker sur ENV).
Sur les images officielles Debian, les locales disponibles par défaut comprennent C, C.UTF-8 et POSIX. Une locale comme fr_FR.UTF-8 doit être générée si elle n’est pas déjà présente. PHP, de son côté, ne choisit pas nécessairement la locale souhaitée parce que la variable existe : il faut demander au processus de la lire avec setlocale() et contrôler le résultat (image officielle Debian, manuel PHP de setlocale).
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Ce que signifie C.UTF-8 par rapport à fr_FR.UTF-8
C.UTF-8 conserve le comportement de la locale C tout en prenant en charge l’encodage UTF-8. Ce n’est pas une locale française : l’UTF-8 permet de traiter des caractères Unicode, mais ne fournit pas à lui seul les conventions régionales françaises. fr_FR.UTF-8 désigne une locale française utilisant UTF-8 (page Debian sur les locales).
#1 Best Overall
| Point à comparer | C.UTF-8 |
fr_FR.UTF-8 |
|---|---|---|
| Disponibilité par défaut dans l’image officielle Debian | Présente par défaut | À générer si elle n’est pas déjà disponible (image Debian) |
| Comportement régional | Comportement de la locale C, avec prise en charge UTF-8 |
Conventions françaises avec prise en charge UTF-8 (documentation Debian) |
Diagnostiquer la locale dans le conteneur
Effectuez les vérifications dans le conteneur qui exécute l’application. Un résultat obtenu dans un shell interactif ne prouve pas que le processus PHP reçoit les mêmes variables ni suit le même chemin de lancement.
- Identifiez la base de l’image. La méthode décrite ici pour générer une locale concerne Debian ; ne l’appliquez pas automatiquement à Alpine ou à une autre base. Vérifiez le système réellement utilisé plutôt que de déduire la distribution du seul Dockerfile.
- Vérifiez les locales installées. Dans un conteneur Debian, exécutez
locale -a. Sifr_FR.UTF-8n’apparaît pas, inspectez/etc/locale.genet vérifiez que la locale voulue y est sélectionnée, puis lancezlocale-gen. Cette commande compile les locales sélectionnées ; relancezlocale -apour constater les noms disponibles, qui peuvent être normalisés par le système (documentation Debian de locale-gen). - Contrôlez l’environnement reçu par PHP. Vérifiez
LANG,LC_ALLet les variablesLC_*dans le contexte de lancement de l’application. La configuration d’un service ou du processus de lancement peut différer de l’environnement observé dans le shell. Même siLANG=fr_FR.UTF-8est présent, cela ne prouve pas que PHP a appliqué cette locale. - Initialisez la locale depuis PHP et contrôlez le retour. Pour demander à PHP de prendre ses réglages dans l’environnement, appelez
setlocale(LC_ALL, ''), ou ciblez la catégorie dont votre application a besoin. La fonction renvoie la locale définie oufalsesi la locale demandée n’existe pas ou n’est pas prise en charge (manuel PHP). - Lisez l’état de la catégorie pertinente. Un appel sur
LC_ALLpeut produire un état composite. Consultez aussi la catégorie concernée afin de repérer unLC_CTYPEqui serait resté enC.UTF-8, par exemple. - Reproduisez le problème par le même chemin d’exécution. Testez dans le même conteneur, avec le même SAPI, les mêmes variables de service et le même lancement que l’application concernée. Les résultats d’un autre contexte ne suffisent pas à attribuer la cause à une version de PHP ou à un orchestrateur.
Choisir la catégorie PHP adaptée
setlocale() agit sur des catégories distinctes. Modifier l’une d’elles ne change pas automatiquement les autres (manuel PHP).
Rank #2
LC_CTYPEconcerne notamment la classification et la conversion des caractères.LC_TIMEcontrôle les conventions de formatage des dates.LC_NUMERICconcerne notamment le séparateur décimal.LC_ALLdemande une configuration générale ; ciblez plutôt une catégorie précise si votre besoin est limité à un aspect.
Ce qui est établi sur le cas rapporté
Le cas décrit rapporte que LC_CTYPE du processus PHP restait en C.UTF-8 malgré une configuration française dans le Dockerfile, et attribue le problème à l’absence d’initialisation explicite de la locale du processus. Le Dockerfile, la version de PHP, l’image de base et le SAPI de cet incident ne sont pas précisés ; cette explication décrit le cas rapporté, sans établir le déclencheur exact d’un autre déploiement (manuel PHP).
Quick Recap
Best Value
- Docker, Docker Swarm, Docker Compose, Programmer, Developer, Coding, Programming, Software Engineer, Code, DevOps, Deploy, Deployment, Kubernetes, Salt, Puppet, Chef, Terraform, Container, AWS, Azure, Cloud, Geek, Funny, Computer, Software, Tech, IT
- Integration, Scrum, Compile, Compilation, Science, Bug, Debug, Python, Linux, Java, Javascript, Scala, Dotnet, Kotlin
- Lightweight, Classic fit, Double-needle sleeve and bottom hem
Rank #3
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

