потерять локаль при запуске скрипта fcgi - PullRequest
0 голосов
/ 22 февраля 2012

У меня проблема с кодировкой при запуске приложения django.Я наконец-то обнаружил, что в моем приложении django нет установленного языкового стандарта.

Странно то, что я правильно настроил файл envvars.С этим в envvars:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
. /etc/default/locale

export LANG
locale

Когда я перезапускаю apache, команда locale выполняется и я получаю правильные настройки fr_FR.UTF-8 для LANG и LC _ *.

Теперь я настраиваюмаленький скрипт test.fcgi:

#!/usr/bin/python
def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    from commands import getoutput
    return ["%s"%getoutput("locale")]

from flup.server.fcgi import WSGIServer
WSGIServer(myapp).run()

когда я запускаю его с

sudo -u www-data test.fcgi

, я также получаю правильные настройки локали.Но всякий раз, когда я получаю доступ к скрипту через веб-браузер, я не получаю настройки локали:

LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Почему у Apache правильные настройки, а у моего скрипта fcgi нет?

1 Ответ

1 голос
/ 22 февраля 2012

Я решил это, добавив DefaultInitEnv LANG "en_US.UTF-8" в мой sites-available/default. Теперь скрипт fcgi сообщает мне UTF-8!

...