Расширение php gettext работает на моем локальном хосте, но не работает на моем хостинге - PullRequest
0 голосов
/ 16 февраля 2010

Я попробовал php gettext на моем локальном хосте, и все заработало, но когда я загрузил файлы на свой хостинг, он сказал следующее:

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

Я пользуюсь бесплатным хостингом Zymic (это связано с тем, что БЕСПЛАТНО?).

My 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");
?>

Ответы [ 2 ]

3 голосов
/ 16 февраля 2010

Первая проблема - это предупреждающее сообщение, которое вы получаете, в котором указано, что safe_mode включено, что слишком часто случается, когда вы пользуетесь услугами общего хостинга. .

И когда safe_mode включен, вы не можете устанавливать какие-либо переменные окружения: единственные, которые вы можете установить, используя putenv, - это те, чье имя начинается с чего-то в списке в safe_mode_allowed_env_vars.


LC_ вероятно не разрешенный префикс; что означает, что вы не можете сделать это:

putenv("LC_ALL=$locale");

Эта строка бесполезна, вы можете удалить ее - по крайней мере, предупреждение исчезнет ...


После этого у вас возникает вторая проблема : функция bindtextdomain не существует - отсюда Fatal Error, которая завершает ваш скрипт.

Эта функция является одной из функций, предоставляемых расширением gettext . Я бы сказал, что это расширение не установлено / не включено в вашей службе хостинга ...

Вы можете проверить, работает ли страница, содержащая:

<?php
phpinfo();
?>

В нем будут перечислены все расширения, которые установлены / включены; если gettext не является одним из них, то, к сожалению, вы мало что можете сделать ...

Обращаться к вашему провайдеру истории, чтобы он установил это расширение, было бы идеей ... Но с бесплатным хостингом, я сомневаюсь, что это поможет ... Возможно, вам придется пойти с другим хостингом ( даже если это стоит несколько долларов / евро ...)

1 голос
/ 16 февраля 2010

Я использую бесплатный хостинг Zymic (это связано с тем, что это БЕСПЛАТНО?).

Возможно. В нем включен safe_mode, и вы не можете изменить переменную окружения LC_ALL. Вы столкнетесь с такими проблемами на каждом хосте, у которого включен safe_mode, и большинство бесплатных имеют его таким образом.

Попробуйте удалить вызов putenv () и посмотрите, что произойдет.

...