質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.37%

  • Python 3.x

    2420questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pythonのCGI

解決済

回答 1

投稿 2017/12/05 00:11 ・編集 2017/12/05 00:13

  • 評価
  • クリップ 2
  • VIEW 81

tetsu1

score 1

前提・実現したいこと

Macのローカル環境にて、Pythonの簡易サーバーを起動させて、HTMLを表示させたい。
具体的には、test.py(内容は下記、chmod +xで権限付与ずみ)をHTMLで表示させたい。
test.pyが存在するディレクトリにて、次のコマンドを実行。
python3 -m http.server --cgi 8080

test.pyのスクリプト

!/usr/bin/python

 -*- coding: utf-8 -*-

import cgi, cgitb
form = cgi.FieldStorage()

name = form.getvalue('name')

print ("Content-type:text/html\n\n")
print ("<html>")
print ("<head>")
print ("<title>Hello, world!</title>")
print ("</head>")
print ("<body>")
print ("Hello, %s!" % (name, ))
print ("</body>")
print ("</html>")

発生している問題・エラーメッセージ

サーバーは起動するが、localhostにてtest.pyを見ると、htmlではなく、
上記のままのスクリプトが表記されてしまいます。エラーなどは出ていません。

試したこと

下記リンクなどにあるように、/etc/apache2/http.confの書き換えを実施しましたが、解決しておりません。そもそも、このファイルで良いのかもよくわかっていません。
http://oneshotlife-python.hatenablog.com/entry/Python_CGI

補足情報(言語/FW/ツール等のバージョンなど)

Mac、Python3.5系、JupyterNotebook(今回は使用していないが)

原因と対策について、よろしくお願い申し上げます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

.
├── cgi-bin
│   └── test.py
└── ここの位置でpython3 -m http.server --cgi 8080 のコマンドを実行する。

test.pyにアクセスするURL

□参考情報
初心者Webアプリ診断員がWebアプリをpythonで一から学んで書いてみる~cgi編~
・「python cgi http.server 表示される 」のキーワードで検索すると解決方法がヒットするかと。


□補足
pythonはソースコードのインデント位置が重要な言語なため、ソースコードはcodeタグで囲ってくださいな。

投稿 2017/12/05 07:22

編集 2017/12/05 07:31

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/05 23:50

    ありがとうございます。1つの原因だったようで、他の解決策と組み合わせることでできました。
    なぜ、ディレクトリが違うとできないんだろうか?と思いますが、ディレクトリ名もcgi-bin以外では動作しない(認識できない)などが原因かなと思いました。

    キャンセル

  • 2017/12/06 00:41

    □http.server.CGIHTTPRequestHandler
    https://docs.python.jp/3/library/http.server.html#http.server.CGIHTTPRequestHandler
    cgi_directories(原文)
    この値は標準で ['/cgi-bin', '/htbin'] であり、CGI スクリプトを含んでいることを示すディレクトリを記述します。

    キャンセル

  • 2017/12/06 00:48

    最初から解説しますねー。
    □python3 -m http.server --cgi 8080
    1,python3 -m http.server → http.serverモジュールを探して __main__ モジュールとして実行。
    2,http.server --cgi 8080 → --cgiでCGIHTTPRequestHandlerを有効にして、 ポート番号 8080番号でリッスン。
    3,CGIHTTPRequestHandlerはcgi_directoriesとして'/cgi-bin'または '/htbin'を使用。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.37%

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    2420questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。