OVH Community, votre nouvel espace communautaire.

Cron et locale


shemuuu
30/03/2016, 18h12
J'ai trouvé la solution en ajoutant ces 2 lignes de code :
Code PHP:
putenv("LANG=" implode(","$LOCALE_LANG));
putenv("LANGUAGE=" implode(","$LOCALE_LANG)); 

shemuuu
30/03/2016, 10h48
Bonjour,
Après plusieurs modifs, toujours le même résultat. Ex:
Code:
sh: warning: setlocale: LC_ALL: cannot change locale (fr_FR.utf8,fr_FR,fr,fra)
Ça y est, je crois que je n'ai presque plus de cheveux...
Si une bonne âme me sauve ma capillarité, je lui serais entièrement reconnaissant car je ne sais plus quoi faire...

Via les logs, j'ai ceci en var_dump pour respectivement putenv, setlocale, bindtextdomain, bind_textdomain_codeset et textdomain
Code:
[2016-03-30 00:09:02] bool(true)
[2016-03-30 00:09:02] string(10) "fr_FR.utf8"
[2016-03-30 00:09:02] string(35) "/home/xxx/xxx.fr/locale"
[2016-03-30 00:09:02] string(5) "UTF-8"
[2016-03-30 00:09:02] string(10) "xxx"
Et un print_r de $_ENV me donne :
Code:
[2016-03-30 00:09:02] Array
[2016-03-30 00:09:02] (
[2016-03-30 00:09:02]     [HOME] => /homez.62/xxx
[2016-03-30 00:09:02]     [PWD] => /homez.62/xxx
[2016-03-30 00:09:02]     [PATH] => /usr/local/bin:/usr/bin:/bin
[2016-03-30 00:09:02]     [USER] => xxx
[2016-03-30 00:09:02]     [LANG] => en_US.UTF-8
[2016-03-30 00:09:02]     [LANGUAGE] => en_US.UTF-8
[2016-03-30 00:09:02] )

shemuuu
30/03/2016, 10h33
Bonjour,
Après plusieurs modifs, toujours le même résultat. Ex:
Code:
sh: warning: setlocale: LC_ALL: cannot change locale (fr_FR.utf8,fr_FR,fr,fra)
Ça y est, je crois que je n'ai presque plus de cheveux...
Si une bonne âme me sauve ma capillarité, je lui serais entièrement reconnaissant car je ne sais plus quoi faire...

Via les logs, j'ai ceci en var_dump pour respectivement putenv, setlocale, bindtextdomain, bind_textdomain_codeset et textdomain
Code:
[2016-03-30 00:09:02] bool(true)
[2016-03-30 00:09:02] string(10) "fr_FR.utf8"
[2016-03-30 00:09:02] string(35) "/home/xxx/xxx.fr/locale"
[2016-03-30 00:09:02] string(5) "UTF-8"
[2016-03-30 00:09:02] string(10) "xxx"
Et un print_r de $_ENV me donne :
Code:
[2016-03-30 00:09:02] Array
[2016-03-30 00:09:02] (
[2016-03-30 00:09:02]     [HOME] => /homez.62/xxx
[2016-03-30 00:09:02]     [PWD] => /homez.62/xxx
[2016-03-30 00:09:02]     [PATH] => /usr/local/bin:/usr/bin:/bin
[2016-03-30 00:09:02]     [USER] => xxx
[2016-03-30 00:09:02]     [LANG] => en_US.UTF-8
[2016-03-30 00:09:02]     [LANGUAGE] => en_US.UTF-8
[2016-03-30 00:09:02] )

shemuuu
25/03/2016, 17h03
Bonjour,
Je m'arrache un peu les cheveux sur des cron de mon hébergement en mutu.

J'ai un script php qui envoie des mails via une boucle.
Ces mails sont localisés avec gettext, ex :

Code PHP:
$LOCALE_LANG     = array("es_ES.utf8""es_ES""es""spa");
$LOCALE_FILE    "trad";
putenv("LC_ALL=" implode(","$LOCALE_LANG));
setlocale(LC_ALL$LOCALE_LANG);
bindtextdomain($LOCALE_FILE$APP_DIR "locale");
bind_textdomain_codeset($LOCALE_FILE"UTF-8");
textdomain($LOCALE_FILE); 
En lançant directement par le navigateur, cela fonctionne sans problème.
Cependant via un cron, la localisation ne se fait pas bien que mon code ci-dessus soit bien exécuté (vérifié avec des var_dump).

La seule erreur que j'ai dans les logs est :
Code:
sh: warning: setlocale: LC_ALL: cannot change locale (es_ES.utf8,es_ES,es,spa)
Est-ce au final possible de changer la locale dans une cron ?

Tout éclaircissement de votre part est le bienvenue !