質問編集履歴
2
題名を変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
python3+bottle+cgiで生じた
|
1
|
+
python3+bottle+cgiで生じた500エラーを解決したい
|
test
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
「KeyError: 'REQUEST_METHOD'」を解決したい
|
6
|
-
|
7
5
|
Xserverにてpython3+bottle+cgiのwebアプリケーションを動かしたい
|
8
6
|
|
9
7
|
|
@@ -198,7 +196,7 @@
|
|
198
196
|
|
199
197
|
|
200
198
|
|
201
|
-
**bottleのインスタンス生成で躓いていそう
|
199
|
+
**bottleのインスタンス生成で躓いていそう?**
|
202
200
|
|
203
201
|
|
204
202
|
|
1
試したことを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -56,8 +56,6 @@
|
|
56
56
|
|
57
57
|
|
58
58
|
|
59
|
-
|
60
|
-
|
61
59
|
### 該当のソースコード
|
62
60
|
|
63
61
|
|
@@ -204,7 +202,7 @@
|
|
204
202
|
|
205
203
|
|
206
204
|
|
207
|
-
#### environ['REQUEST_METHOD']を正しく渡す(
|
205
|
+
#### environ['REQUEST_METHOD']を正しく渡す(挫折)
|
208
206
|
|
209
207
|
environ['REQUEST_METHOD']がどこでセットされるかを確認し、正しく値を渡すように修正
|
210
208
|
|
@@ -222,11 +220,127 @@
|
|
222
220
|
|
223
221
|
```
|
224
222
|
|
225
|
-
|
223
|
+
__call__に渡されるenvirionにREQUEST_METHODのキーがないと見てよさそうだ
|
224
|
+
|
225
|
+
|
226
|
+
|
226
|
-
|
227
|
+
だが、__call__がどこでどのように呼ばれているのか、よく分からなかった
|
228
|
+
|
229
|
+
|
230
|
+
|
227
|
-
|
231
|
+
#### main.pyの中身を書き換えてみる
|
232
|
+
|
228
|
-
|
233
|
+
```python
|
234
|
+
|
235
|
+
#!~/usr/bin/python3.6
|
236
|
+
|
237
|
+
import bottle
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
# 省略
|
242
|
+
|
243
|
+
|
244
|
+
|
229
|
-
|
245
|
+
@app.route('/')
|
246
|
+
|
247
|
+
```
|
248
|
+
|
249
|
+
index()を削ってみる
|
250
|
+
|
251
|
+
すると、ブラウザのエラーが404エラーに変わり、「Not found: '/'」と出力される
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
もう少し書き換えてみる
|
256
|
+
|
257
|
+
index()の返り値を変更
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
```python
|
262
|
+
|
263
|
+
#!~/usr/bin/python3.6
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
# 省略
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
@app.route('/')
|
272
|
+
|
273
|
+
def index():
|
274
|
+
|
275
|
+
# return bottle.jinja2_template('index.tpl', current_page='philosophy')
|
276
|
+
|
277
|
+
return 'OK
|
278
|
+
|
279
|
+
```
|
280
|
+
|
281
|
+
ブラウザに「OK」と出力される
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
index.cgiを直接実行した際、bottleのインスタンス生成で躓いてると推測したが、
|
286
|
+
|
287
|
+
ブラウザからアクセスする際は、そこはどうもうまく動いている?
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
bottle.jinja2_template()が動いていないと思われる
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
**bottle.pyはそのファイルひとつだけを配置しており、bottle.pyでimportしているjinja2のモジュールがない**
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
#### pip3でモジュールをインストール
|
300
|
+
|
301
|
+
jinja2を入れるにあたり、現在、pubulic_html/rexia/にbottle.pyを直接置いているが、pipで管理するように変更
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
Xserverに元々入っていたpip3でbottleをインストールし、pubulic_html/rexia/bottle.pyを削除
|
306
|
+
|
307
|
+
```
|
308
|
+
|
309
|
+
[xs186537@sv10203 rexia]$ pip3 install bottle
|
310
|
+
|
311
|
+
Collecting bottle
|
312
|
+
|
313
|
+
Using cached bottle-0.12.18-py3-none-any.whl (89 kB)
|
314
|
+
|
315
|
+
Installing collected packages: bottle
|
316
|
+
|
317
|
+
Successfully installed bottle-0.12.18
|
318
|
+
|
319
|
+
[xs186537@sv10203 rexia]$ python3.6 index.cgi
|
320
|
+
|
321
|
+
Traceback (most recent call last):
|
322
|
+
|
323
|
+
File "index.cgi", line 2, in <module>
|
324
|
+
|
325
|
+
from main import app
|
326
|
+
|
327
|
+
File "/home/xs186537/xs186537.xsrv.jp/public_html/rexia/main.py", line 2, in <module>
|
328
|
+
|
329
|
+
import bottle
|
330
|
+
|
331
|
+
ModuleNotFoundError: No module named 'bottle'
|
332
|
+
|
333
|
+
[xs186537@sv10203 rexia]$ pip3 freeze
|
334
|
+
|
335
|
+
bottle==0.12.18
|
336
|
+
|
337
|
+
```
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
pip3で入れたものが、/usr/bin/python3.6、index.cgiで参照できない???
|
342
|
+
|
343
|
+
|
230
344
|
|
231
345
|
|
232
346
|
|