"PHP Fatal error: Uncaught Error: Class 'Locale' not found" Fix for cPanel

Par Sheldon Poon, publié le

Préface

Je l'écris surtout pour moi-même, pour me le rappeler... à moi-même. Je viens de passer une demi-heure à chercher la solution à ce problème pour me rendre compte que j'aurais dû savoir exactement où chercher.

Ce que le message d'erreur essaie de dire

"PHP Fatal error: Uncaught Error: Class 'Locale' not found" n'est pas clair ...

Tout d'abord, où se trouve ce message ? Lorsque vous essayez d'exécuter votre script PHP, vous obtenez une erreur 500 du serveur. La première chose à faire est de consulter les journaux du serveur.

Je souligne cette étape parce que c'est toujours la chose que les nouveaux programmeurs oublient. Pour une raison quelconque, la réaction réflexe est de revenir à leur code (je vois nos stagiaires faire cela tout le temps). Ou alors, ils s'arrêtent tout simplement et ne savent pas quoi faire.

Il est important de savoir vers où votre serveur produit des erreurs et de s'assurer que, dans un environnement de développement, toutes les erreurs sont activées pour identifier les problèmes. Cela semble simple, mais j'ai dû expliquer ce point à plus d'un administrateur de serveur.

Ensuite, qu'est-ce que le serveur essaie de vous dire ? Eh bien, en un mot, vous essayez de charger une classe qui n'existe pas. Le fait est que ce n'est probablement pas vraiment le problème que le serveur "pense" qu'il est.

La classe "Locale" est livrée avec quelques bibliothèques Composer et est une dépendance lorsque vous activez des fonctions liées au formatage international. Comme les bibliothèques Composer s'occupent d'elles-mêmes, il y a de fortes chances que le problème réel soit que la bibliothèque ne se charge pas correctement, pas tant qu'elle n'est pas "introuvable".

Alors pourquoi le "Locale" ne se charge-t-il pas correctement ? Eh bien, PHP dépend d'un certain nombre de paramètres du serveur et est généralement configuré pour être optimisé en termes de vitesse. Le compromis est qu'un administrateur de serveur essaiera de ne charger que ce qui est nécessaire dans la configuration afin que PHP puisse traiter le code le plus rapidement possible avec le moins de charge possible sur le serveur (matériel).

Il en résulte que de nombreux administrateurs auront désactivé "intl" par défaut. Et comme Locale dépend d'intl, il ne se charge pas et est donc "introuvable".

Ok, peu importe. Comment puis-je vraiment régler ce problème ?

La réponse évidente à la question "comment réparer ça" est donc d'allumer simplement la fonction. Dans cPanel, cela devrait être relativement simple si vous avez accès au "sélecteur PHP".

  1. Se connecter à cPanel
  2. Recherchez la section "Logiciels".
  3. Recherchez l'option "Select PHP Version" et cliquez sur l'icône
  4. Cherchez la case "intl" et assurez-vous qu'elle est cochée
  5. cPanel devrait enregistrer automatiquement votre sélection
  6. Retournez à votre code PHP pour voir si le problème est résolu

Besoin d'aide avec vos données ?

  • Partager: