Project

General

Profile

Actions

Anomalie #1602

closed

putenv PHP function disabled on my hosting

Added by anthony heit about 3 years ago. Updated about 1 year ago.

Status:
Fermé
Priority:
Bas
Category:
Core
Target version:
Start date:
12/02/2021
Due date:
% Done:

100%

Estimated time:
Version utilisée:

Description

Bonjour,

j'ai mis à jour de la version 0.9.4.2 (qui fonctionnait) vers la 0.9.5.2 et la 0.9.6 ce soir avec le message d'erreur suivant quand je lance mon instance de galette :

Fatal error: Uncaught ErrorException: putenv() has been disabled for security reasons in /var/www/legtux.org/users/ssl/www/galette/lib/Galette/Core/I18n.php:146 Stack trace: #0 [internal function]: {closure}() #1 /var/www/legtux.org/users/ssl/www/galette/lib/Galette/Core/I18n.php(146): putenv() #2 /var/www/legtux.org/users/ssl/www/galette/lib/Galette/Core/I18n.php(130): Galette\Core\I18n->updateEnv() #3 /var/www/legtux.org/users/ssl/www/galette/lib/Galette/Core/I18n.php(113): Galette\Core\I18n->changeLanguage() #4 /var/www/legtux.org/users/ssl/www/galette/includes/dependencies.php(200): Galette\Core\I18n->__construct() #5 [internal function]: {closure}() #6 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/invoker/src/Invoker.php(74): call_user_func_array() #7 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Definition/Resolver/FactoryResolver.php(80): Invoker\Invoker->call() #8 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Definition/Resolver/ResolverDispatcher.php(71): DI\Def in /var/www/legtux.org/users/ssl/www/galette/lib/Galette/Core/I18n.php on line 146

j'ai demandé à mon hébergeur, la fonction putenv() est désactivé sur le serveur.

comment puis-je régler le problème sachant que seul le français est utilisé ?

cordialement

Anthony

Actions #1

Updated by Johan Cwiklinski about 3 years ago

  • Subject changed from fatal error suite à maj vers 0.9.6 to putenv PHP function disabled on my hosting

L'utilisation d'appels à putenv() a été introduit en 2004 ; je ne sais pas exactement pourquoi puisque cela ne semble utile que sous windows.

Je pense que pas mal de choses là dedans sont juste datées, mais je n'ai pas de solution rapide à proposer ; je n'ai même pas de windows sous la main. En contournement, ajouter @ devant les appels qui posent problème, ou commenter la condition complète devrait faire l'affaire.

Actions #2

Updated by Johan Cwiklinski about 3 years ago

  • Priority changed from Normal to Bas
Actions #3

Updated by anthony heit almost 3 years ago

Bonjour,

J'ai essayer d'ajouter et/ ou de commenter, mais cela ne fonctionne pas,

cela renvoie d'autres erreurs et en commentant à nouveau les nouvelles erreurs j'arrive au final sur une page blanche.

Pour info le serveur est sous debian et mon ordi tourne sous ubuntu, donc à priori pas de windows dans l'affaire.

cordialement

Anthony

Actions #4

Updated by Johan Cwiklinski almost 3 years ago

Le correctif à apporter serait le suivant :

diff --git a/galette/lib/Galette/Core/I18n.php b/galette/lib/Galette/Core/I18n.php
index e4ab77b1a..83a23e0e9 100644
--- a/galette/lib/Galette/Core/I18n.php
+++ b/galette/lib/Galette/Core/I18n.php
@@ -142,19 +142,14 @@ class I18n

         setlocale(LC_ALL, $this->getLongID());

-        if (
-            putenv("LANG=" . $this->getLongID())
-            or putenv("LANGUAGE=" . $this->getLongID())
-            or putenv("LC_ALL=" . $this->getLongID())
-        ) {
-            $textdomain = realpath(GALETTE_ROOT . 'lang');
-            //main translation domain
-            $domain = 'galette';
-            bindtextdomain($domain, $textdomain);
-            //set default translation domain and encoding
-            textdomain($domain);
-            bind_textdomain_codeset($domain, 'UTF-8');
-        }
+        $textdomain = realpath(GALETTE_ROOT . 'lang');
+        //main translation domain
+        $domain = 'galette';
+        bindtextdomain($domain, $textdomain);
+        //set default translation domain and encoding
+        textdomain($domain);
+        bind_textdomain_codeset($domain, 'UTF-8');
+
         if ($translator) {
             $translator->setLocale($this->getLongID());
         }

S'il y a d'autres erreurs, ça doit être autre chose, vérifier dans les logs.

Actions #5

Updated by anthony heit almost 3 years ago

Bonjour,

merci pour la réponse, malheureusement toujours des erreurs :

Fatal error: Uncaught ErrorException: Use of undefined constant GALETTE_TPL_SUBDIR - assumed 'GALETTE_TPL_SUBDIR' (this will throw an Error in a future version of PHP) in /var/www/legtux.org/users/ssl/www/galette/includes/dependencies.php:71 Stack trace: #0 /var/www/legtux.org/users/ssl/www/galette/includes/dependencies.php(71): {closure}() #1 [internal function]: {closure}() #2 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/invoker/src/Invoker.php(74): call_user_func_array() #3 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Definition/Resolver/FactoryResolver.php(80): Invoker\Invoker->call() #4 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Definition/Resolver/ResolverDispatcher.php(71): DI\Definition\Resolver\FactoryResolver->resolve() #5 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Container.php(390): DI\Definition\Resolver\ResolverDispatcher->resolve() #6 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Container.php(139): DI\Cont in /var/www/legtux.org/users/ssl/www/galette/includes/dependencies.php on line 71

les logs de galette donnent (pas de log avec la modif effectuée):

2001:41d0:2:12d1:: - 2022-01-11 20:36:02 - DEBUG - Trying to set locale to fr_FR
2001:41d0:2:12d1:: - 2022-01-11 20:40:09 - DEBUG - Trying to set locale to fr_FR
2001:41d0:2:12d1:: - 2022-01-11 20:40:36 - DEBUG - Trying to set locale to fr_FR
2001:41d0:2:12d1:: - 2022-01-11 20:45:25 - DEBUG - Trying to set locale to fr_FR
2001:41d0:2:12d1:: - 2022-01-11 20:46:18 - DEBUG - Trying to set locale to fr_FR
2001:41d0:2:12d1:: - 2022-01-11 20:47:55 - DEBUG - Trying to set locale to fr_FR
2001:41d0:2:12d1:: - 2022-01-11 21:06:29 - DEBUG - Trying to set locale to fr_FR
94.23.17.209 - 2022-01-12 00:34:50 - DEBUG - Trying to set locale to fr_FR
94.23.17.209 - 2022-01-12 21:20:56 - ALERT - [Db] Error (2006|Connect Error: SQLSTATE[HY000] [2006] MySQL server has gone away)
2001:41d0:2:12d1:: - 2022-01-15 09:34:55 - DEBUG - Trying to set locale to fr_FR

et les logs du serveur :

185.191.171.14 - - [12/Jan/2022:22:20:06 +0100] "GET /robots.txt HTTP/1.1" 404 360 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
185.191.171.18 - - [12/Jan/2022:22:20:56 +0100] "GET /galette/webroot/index.php/login?ui_pref_lang=ar HTTP/1.1" 200 758 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
185.191.171.18 - - [12/Jan/2022:22:20:06 +0100] "GET /galette/webroot/index.php/login?ui_pref_lang=ar HTTP/1.1" 200 856 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
45.129.18.106 - - [13/Jan/2022:21:35:07 +0100] "HEAD / HTTP/1.1" 200 111 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36"
40.77.167.100 - - [14/Jan/2022:19:52:28 +0100] "GET /robots.txt HTTP/1.1" 404 5214 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
40.77.167.100 - - [14/Jan/2022:19:52:28 +0100] "GET /robots.txt HTTP/1.1" 404 425 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
40.77.167.100 - - [14/Jan/2022:23:49:26 +0100] "GET /robots.txt HTTP/1.1" 404 5194 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.39.67 - - [14/Jan/2022:23:49:34 +0100] "GET /galette/webroot/subscribe?ui_pref_lang=uk HTTP/1.1" 200 6120 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
2a01:e0a:9c4:31b0:88c5:b915:30b:fed4 - - [15/Jan/2022:10:31:56 +0100] "GET /galette/webroot//login HTTP/1.1" 200 5763 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"
2a01:e0a:9c4:31b0:88c5:b915:30b:fed4 - - [15/Jan/2022:10:33:07 +0100] "GET /galette/webroot//login HTTP/1.1" 200 5866 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"
2a01:e0a:9c4:31b0:88c5:b915:30b:fed4 - - [15/Jan/2022:10:34:55 +0100] "GET /galette/webroot//login HTTP/1.1" 200 1344 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"
2a01:e0a:9c4:31b0:88c5:b915:30b:fed4 - - [15/Jan/2022:10:40:09 +0100] "GET /galette/webroot//login HTTP/1.1" 200 5969 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"
2a01:e0a:9c4:31b0:88c5:b915:30b:fed4 - - [15/Jan/2022:12:20:52 +0100] "GET /galette/webroot//login HTTP/1.1" 200 5969 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0"

pour la modif, il faut bien supprimer les lignes "-" et ajouter les lignes "+" ?

cordialement

Anthony

Actions #6

Updated by Johan Cwiklinski almost 3 years ago

Hello,

anthony heit a écrit (#note-5):

merci pour la réponse, malheureusement toujours des erreurs :

C'en est une autre pour le coup.

Fatal error: Uncaught ErrorException: Use of undefined constant GALETTE_TPL_SUBDIR - assumed 'GALETTE_TPL_SUBDIR' (this will throw an Error in a future version of PHP) in /var/www/legtux.org/users/ssl/www/galette/includes/dependencies.php:71 Stack trace: #0 /var/www/legtux.org/users/ssl/www/galette/includes/dependencies.php(71): {closure}() #1 [internal function]: {closure}() #2 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/invoker/src/Invoker.php(74): call_user_func_array() #3 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Definition/Resolver/FactoryResolver.php(80): Invoker\Invoker->call() #4 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Definition/Resolver/ResolverDispatcher.php(71): DI\Definition\Resolver\FactoryResolver->resolve() #5 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Container.php(390): DI\Definition\Resolver\ResolverDispatcher->resolve() #6 /var/www/legtux.org/users/ssl/www/galette/vendor/php-di/php-di/src/Container.php(139): DI\Cont in /var/www/legtux.org/users/ssl/www/galette/includes/dependencies.php on line 71
[...]

C'est corrigé, voir #1615

94.23.17.209 - 2022-01-12 21:20:56 - ALERT - [Db] Error (2006|Connect Error: SQLSTATE[HY000] [2006] MySQL server has gone away)

Ça, ce n'est pas un problème de Galette à priori ; enfin, pas directement (j'ai souvent ça qua,nd je met des points d’arrêt dans le code, et que je met plus de 30 secondes à inspecter). À voir su ça se reproduit (et dans quelles circonstances).

pour la modif, il faut bien supprimer les lignes "-" et ajouter les lignes "+" ?

Oui, oui :) À vue de nez, tu as bien appliqué la modif puisque l'erreur d'origine n'est plus là ;)

Actions #7

Updated by anthony heit almost 3 years ago

Super ça refonctionne,

merci.

Actions #8

Updated by Johan Cwiklinski over 2 years ago

  • Status changed from Nouveau to Résolu
  • % Done changed from 0 to 100
Actions #9

Updated by Johan Cwiklinski about 1 year ago

  • Category set to Core
  • Status changed from Résolu to Fermé
  • Assignee set to Johan Cwiklinski
  • Target version set to 1.0.0
Actions

Also available in: Atom PDF