回答編集履歴
4
追記2をもう少し詳しく記載。
answer
CHANGED
@@ -8,12 +8,42 @@
|
|
8
8
|
|
9
9
|
apache の設定で次を追加すると うまくいくかもしれません。
|
10
10
|
|
11
|
-
```apache2.conf
|
12
|
-
# 環境変数LANGをShellから引き継ぐ
|
13
|
-
|
11
|
+
envvars に LANGを設定
|
14
12
|
|
13
|
+
```/etc/apache2/envvars
|
14
|
+
unset HOME
|
15
|
+
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
|
16
|
+
SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
|
17
|
+
else
|
18
|
+
SUFFIX=
|
19
|
+
fi
|
20
|
+
export APACHE_RUN_USER=www-data
|
21
|
+
export APACHE_RUN_GROUP=www-data
|
22
|
+
export APACHE_PID_FILE=/var/run/apache2$SUFFIX/apache2.pid
|
23
|
+
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
|
24
|
+
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
|
25
|
+
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
|
26
|
+
export LANG=ja_JP.utf8 # ← 日本語UTF8を設定
|
27
|
+
export LANG
|
28
|
+
|
15
29
|
```
|
16
30
|
|
31
|
+
Apacheの設定に `PassEnv LANG` を追加
|
32
|
+
|
33
|
+
|
34
|
+
```/etc/apache2/conf-enabled/cgi-bin.conf
|
35
|
+
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
|
36
|
+
<Directory "/var/www/cgi-bin">
|
37
|
+
AllowOverride None
|
38
|
+
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
|
39
|
+
Require all granted
|
40
|
+
AddHandler cgi-script .py
|
41
|
+
PassEnv LANG # ←envvars で設定したLANGをCGIに引き渡す
|
42
|
+
</Directory>
|
43
|
+
```
|
44
|
+
|
45
|
+
サンプルコードを作成して cgi-bin に配置。
|
46
|
+
|
17
47
|
```python
|
18
48
|
#!/usr/bin/env python
|
19
49
|
import sys
|
@@ -26,10 +56,24 @@
|
|
26
56
|
print "date : " + subprocess.check_output('date')
|
27
57
|
```
|
28
58
|
|
29
|
-
|
59
|
+
動作確認
|
30
60
|
|
31
61
|
```
|
62
|
+
# curl localhost/cgi-bin/hello.py
|
63
|
+
```
|
64
|
+
|
65
|
+
passenv ありの場合
|
66
|
+
|
67
|
+
```
|
32
68
|
LANG : ja_JP.utf8
|
33
69
|
sys.getfilesystemencoding: UTF-8 ← ロケールのエンコードが返ってきた
|
34
70
|
date : 2019年 12月 2日 月曜日 15:06:22 UTC ←日本語ロケール
|
71
|
+
```
|
72
|
+
|
73
|
+
passenv なしの場合
|
74
|
+
|
75
|
+
```
|
76
|
+
LANG : None
|
77
|
+
sys.getfilesystemencoding: ANSI_X3.4-1968
|
78
|
+
date : Sun Dec 8 00:10:21 JST 2019
|
35
79
|
```
|
3
サンプルを追加
answer
CHANGED
@@ -12,4 +12,24 @@
|
|
12
12
|
# 環境変数LANGをShellから引き継ぐ
|
13
13
|
PassEnv LANG
|
14
14
|
|
15
|
+
```
|
16
|
+
|
17
|
+
```python
|
18
|
+
#!/usr/bin/env python
|
19
|
+
import sys
|
20
|
+
import os
|
21
|
+
import subprocess
|
22
|
+
|
23
|
+
print "Content-type: text/html\n\n"
|
24
|
+
print "LANG : " + str(os.environ.get('LANG'))
|
25
|
+
print "sys.getfilesystemencoding: " + sys.getfilesystemencoding()
|
26
|
+
print "date : " + subprocess.check_output('date')
|
27
|
+
```
|
28
|
+
|
29
|
+
実行結果
|
30
|
+
|
31
|
+
```
|
32
|
+
LANG : ja_JP.utf8
|
33
|
+
sys.getfilesystemencoding: UTF-8 ← ロケールのエンコードが返ってきた
|
34
|
+
date : 2019年 12月 2日 月曜日 15:06:22 UTC ←日本語ロケール
|
15
35
|
```
|
2
追記2を追加。
answer
CHANGED
@@ -2,4 +2,14 @@
|
|
2
2
|
|
3
3
|
(追記)
|
4
4
|
|
5
|
-
apache の環境変数は、`/etc/apache2/envvars` ファイルで設定されてるのでこれを編集して apache2 を再起動してみてください。
|
5
|
+
apache の環境変数は、`/etc/apache2/envvars` ファイルで設定されてるのでこれを編集して apache2 を再起動してみてください。
|
6
|
+
|
7
|
+
(追記2)
|
8
|
+
|
9
|
+
apache の設定で次を追加すると うまくいくかもしれません。
|
10
|
+
|
11
|
+
```apache2.conf
|
12
|
+
# 環境変数LANGをShellから引き継ぐ
|
13
|
+
PassEnv LANG
|
14
|
+
|
15
|
+
```
|
1
別の回答を追記
answer
CHANGED
@@ -1,1 +1,5 @@
|
|
1
|
-
あてずっぽうですが `raspi-config` で ロケールを設定して、再起動したら治りませんか?
|
1
|
+
あてずっぽうですが `raspi-config` で ロケールを設定して、再起動したら治りませんか?
|
2
|
+
|
3
|
+
(追記)
|
4
|
+
|
5
|
+
apache の環境変数は、`/etc/apache2/envvars` ファイルで設定されてるのでこれを編集して apache2 を再起動してみてください。
|