2010-02-16 3 views
0

J'ai essayé php gettext dans mon localhost et tout a fonctionné, mais quand j'ai téléchargé les fichiers sur mon hébergement, il dit ce qui suit:Php l'extension gettext fonctionne sur mon hôte local, mais sa ne fonctionne pas sur mon hébergement

Warning: putenv(): Safe Mode warning: Cannot set environment variable 'LC_ALL' - it's not in the allowed list in /www/zxq.net/w/e/e/weedcl/htdocs/localization.php on line 4 Fatal error: Call to undefined function bindtextdomain() in /www/zxq.net/w/e/e/weedcl/htdocs/localization.php on line 6 

J'utilise le service d'hébergement gratuit Zymic (Est-ce que cela a à voir avec le fait que c'est gratuit?).

Mon localization.php:

<?php 
$locale = "de_DE"; 
if (isSet($_GET["locale"])) $locale = $_GET["locale"]; 
putenv("LC_ALL=$locale"); 
setlocale(LC_ALL, $locale); 
bindtextdomain("messages", "./locale"); 
bind_textdomain_codeset("messages", 'UTF-8'); 
textdomain("messages"); 
?> 

Répondre

1

J'utilise le service d'hébergement gratuit Zymic (-t-il à voir avec le fait que c'est gratuit?).

Probablement. Il a safe_mode activé et vous ne pouvez pas modifier la variable d'environnement LC_ALL. Vous rencontrerez ce genre de problèmes sur tous les hôtes qui ont activé safe_mode, et la plupart des gratuits l'ont comme ça. Essayez de supprimer l'appel putenv() et voir ce qui se passe alors.

3

Le premier problème est le message d'avertissement que vous obtenez, ce qui indique que safe_mode est activé - ce qui est trop souvent le cas lorsque vous utilisez un service d'hébergement partagé.

Et quand safe_mode est activé, vous ne pouvez pas définir tout type de variables d'environnement: le seul que vous pouvez définir, en utilisant putenv, sont ceux qui ont un nom qui commence par quelque chose dans la liste safe_mode_allowed_env_vars.


LC_ n'est probablement pas un préfixe autorisé; ce qui signifie que vous ne pouvez pas le faire:

putenv("LC_ALL=$locale"); 

Cette ligne étant inutile, vous pourriez vouloir l'enlever - qui va au moins faire l'avertissement vont ...


Après cela, vous avoir un deuxième problème: la fonction bindtextdomain n'existe pas - d'où le Fatal Error qui termine votre script.

Cette fonction étant l'un de ceux fournis par le gettext extension, je dirais que cette extension n'est pas installé/activé sur votre service d'hébergement ...

Vous pouvez vérifier que la gestion d'une page qui contient:

<?php 
phpinfo(); 
?> 

Il va lister toutes les extensions qui sont installées/activées; si gettext n'en fait pas partie, il n'y a pas grand chose à faire, malheureusement ...

Contacter votre fournisseur d'historiques pour installer cette extension serait une bonne idée ... Mais avec un service d'hébergement gratuit, j'en doute 'll aidera ... Vous devrez probablement aller avec un autre service d'hébergement (même si cela coûte quelques dollars/euros ...)

Questions connexes