Comment corriger l'erreur Function putenv() was disabled dans PrestaShop 1.7, 8.x, 9.x

Erreur Function putenv() was disabled by the domain protection module peut surprendre au moment le moins attendu – surtout après que le magasin fonctionnait sans reproche pendant longtemps. Dans cet article, j'explique d'où vient ce problème et comment le résoudre rapidement.

Qu'est-ce que putenv() au juste ?
putenv() est une fonction PHP intégrée utilisée pour définir les variables d'environnement lors de l'exécution du script. PrestaShop l'utilise notamment lors du traitement de la localisation et des traductions – elle l'appelle lors de la configuration des paramètres régionaux pour la langue de la boutique. Sans cette fonction, la boutique peut continuer à fonctionner, mais des avertissements commencent à apparaître dans les journaux, et dans certaines configurations, les erreurs peuvent être visibles directement sur la page – ce qui est bien sûr inacceptable en production.

D'où vient cette erreur ?
Le problème est caractéristique des hébergements partagés qui utilisent le mécanisme de protection des domaines (domain protection). Ce mécanisme isole les domaines individuels les uns des autres au niveau du système d'exploitation, ce qui est une bonne pratique de sécurité – mais cela bloque également certaines fonctions PHP, notamment putenv(). Le cas le plus populaire est l'hébergement Cyber Folks et Hostido, qui à partir d'un certain moment a commencé à activer automatiquement cette option pour chaque nouveau domaine ou sous-domaine ajouté. Le résultat ? La boutique fonctionnait sans problème, vous avez ajouté un sous-domaine ou changé de domaine – et soudain elle a commencé à émettre des avertissements.
Avertissement
Si l'erreur apparaît directement sur la page de la boutique (et non seulement dans les journaux), désactivez d'urgence l'affichage des erreurs PHP dans la configuration du serveur ou le fichier config/defines.inc.php – les erreurs visibles en front-end sont un grave problème d'image et de sécurité.
Le texte complet de l'avertissement ressemble à ceci :
User Warning: Function putenv() was disabled by the domain protection module. Disable domain protection for this domain in the Server Panel to use this function.

Comment résoudre le problème – panneau DirectAdmin (Cyber Folks ou Hostido)
La solution est très simple et ne nécessite aucune modification du code de votre boutique. Il suffit de désactiver la séparation des domaines dans le panneau d'hébergement.
  1. Connectez-vous au panneau DirectAdmin – généralement accessible à l'adresse nomdedomaine.pl:2222 ou nomdedomaine.pl:2223
  2. Allez à la section Paramètres des domaines
  3. Trouvez le domaine de votre boutique dans la liste
  4. Modifiez l'option Séparation des domaines z OUI à NON
  5. Enregistrez les modifications
Succès
Après désactivation de la séparation des domaines, l'erreur devrait disparaître immédiatement, sans nécessiter un redémarrage du serveur ou une reconstruction du cache PrestaShop.
błąd Function putenv() - wyłączenie

błąd Function putenv() - wyłączenie
Et si j'ai un autre panneau d'hébergement ?
Tous les hébergements n'utilisent pas DirectAdmin. Ci-dessous, j'ai rassemblé où chercher cette option dans les autres panneaux populaires :
Panneau d'hébergementOù chercher le paramètre
DirectAdmin (Cyber Folks)Paramètres des domaines – Séparation des domaines – NON
cPanelSélecteur PHP ou ModSecurity – vérifiez les fonctions PHP désactivées
PleskDomaines – paramètres PHP – Fonctions désactivées
HestiaCPPas de séparation des domaines intégrée – vérifiez la configuration PHP-FPM dans /etc/php/X.X/fpm/pool.d/
Serveur dédié (VPS/serveur)Fichier php.ini ou php-fpm.conf – directive disable_functions

Solution alternative – serveur dédié ou pas d'accès au panneau
Si vous avez accès au fichier php.ini ou à la configuration PHP-FPM, vérifiez que putenv ne figure pas sur la liste des fonctions bloquées :
disable_functions = putenv, ...
Supprimer putenv de cette liste et redémarrez PHP-FPM :
systemctl restart php8.1-fpm
Remarque
Ajustez le numéro de version dans la commande ci-dessus à la version PHP utilisée par votre boutique. Vous pouvez le vérifier dans le panneau d'hébergement ou via le fichier phpinfo().

Faut-il se préoccuper de cette erreur ?
Oui. Bien que la boutique fonctionne souvent apparemment normalement malgré cet avertissement :
  • l'erreur peut apparaître sur la page pour les clients (en fonction de la configuration d'affichage des erreurs PHP)
  • dans certaines versions de PrestaShop, une configuration incorrecte de la locale peut causer des problèmes lors de la génération de factures PDF ou de la traduction des e-mails
  • les avertissements accumulés dans les journaux rendent difficile le diagnostic des vrais problèmes
Conseil
Après chaque ajout d'un nouveau domaine ou sous-domaine sur l'hébergement Cyber Folks, accédez immédiatement aux paramètres du domaine et vérifiez l'option de séparation – elle s'active automatiquement par défaut et il est préférable de la désactiver avant que la boutique commence à générer des erreurs.
Avez-vous d'autres questions sur la configuration de PrestaShop ou des problèmes d'hébergement ? Laissez un commentaire ci-dessous.

Laissez votre commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Panier

Fermer

Votre panier est vide.

Commencer les courses

Barre Latérale