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

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

ただいまの
回答率

90.38%

  • Python 3.x

    10729questions

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

  • CGI

    59questions

    CGIはCommon Gateway Interfaceの略称です。

教科書通りのCGIプログラムが動きません

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 433

RinKawakami

score 10

前提・実現したいこと

ローカルサーバーを使い、簡単なWebアプリを作る課題

test_server.py:ローカルサーバーの構築
index.html:「お名前はなんですか?」というメッセージと入力フォームの表示
name.py:入力された値を元に、「あなたは〇〇さんです!」と表示

なお、name.pyはcgi-bin.pyというフォルダに入れ、
test_server.py、index.htmlよりも一つ下の階層にある。

といった物を作ろうとしています。

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

name.pyに飛ぶときに、ブラウザは真っ白で何も表示されず、
以下のエラーがターミナルに表示されます。

127.0.0.1 - - [23/Jan/2019 00:26:43] "GET /index.html HTTP/1.1" 200 -
127.0.0.1 - - [23/Jan/2019 00:28:21] "GET /cgi-bin/name.py?name=%E3%81%8A%E4%BE%BF%E6%89%80%E5%A4%AA%E9%83%8E HTTP/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 52743)
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/server.py", line 1170, in run_cgi
    os.execve(scriptfile, args, env)
FileNotFoundError: [Errno 2] No such file or directory: '/Users/Rin/Desktop/python/cgi-bin/name.py'
----------------------------------------
127.0.0.1 - - [23/Jan/2019 00:28:21] CGI script exit status 0x7f00

該当のソースコード

test_server.py

#encoding: utf-8

import http.server
http.server.test(HandlerClass=http.server.CGIHTTPRequestHandler)

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>初めてのWebアプリケーション!</title>
  <style type="text/css">
  h1{
    background:#eee;
    border: 1px solid #ccc;
    border-left:7px solid #e3297d;
    padding:15px 20px;
  }
  </style>
</head>
<body>
  <h1>あなたのお名前はなんというのですか?</h1>
  <form action="cgi-bin/name.py" method="get">
  <p>お名前:<input type="text", name="name"/></p>
  <button type="subit">送信</button>
  </form>
</body>
</html>

name.py

#!usr/bin/env python
# -*- coding: utf-8 -*-

import cgi

html_body = """
<html>
<head><meta charset="UTF-8"></head>
<body>
<p>あなたのお名前は<span style="font-size:48px"> %s </span>さんです!</p>
</body></html>
"""


form = cgi.FieldStorage()

print("Content-type: text/html")
print(html_body % form['name'].value)

試したこと

name.pyの実行権限は755にしてあります。

「No such file or directory」とありますが、
間違いなく教科書通りにコードを書いてますし、
プログラム通りのファイルの位置関係になっているとも思うのですが・・・

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

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

0

  • 誤: #!usr/bin/env python
  • 正: #!/usr/bin/env python

No such file or directory は「name.py が無いぞ」ってメッセージに見えますが、実際は name.py の shebang のミスに起因する「usr/bin/env が無いぞ」なんだと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/01/23 01:16

    ありがとうございます!
    解決しました!!

    補足でお聞きしたいのですが、
    (おそらく、初歩初歩な質問なんですが)
    なぜ「/」が無いと表示されなかったのでしょうか?

    キャンセル

  • 2019/01/23 01:23

    shebang はスクリプトのインタプリタを指定するもので、実在のコマンドを入れます。
    試しにシェルに
    /usr/bin/env python
    と打つと python が起動しますが、
    usr/bin/env python
    と打つと no such file or directory というエラーメッセージとともにコマンドが失敗するので、それです。

    キャンセル

0

name.pyはcgi-bin.pyというフォルダに入れ

質問の誤植なんでしょうか。cgi-binであってcgi-bin.pyではないはずですが。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/01/23 01:17

    すみません、cgi-bin.pyは誤植です…
    cgi-binでした

    キャンセル

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

  • ただいまの回答率 90.38%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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

  • Python 3.x

    10729questions

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

  • CGI

    59questions

    CGIはCommon Gateway Interfaceの略称です。