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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Python 3.x

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

Q&A

解決済

2回答

3269閲覧

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

RinKawakami

総合スコア20

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Python 3.x

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

0グッド

0クリップ

投稿2019/01/22 15:52

前提・実現したいこと

ローカルサーバーを使い、簡単な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

python3

1#encoding: utf-8 2 3import http.server 4http.server.test(HandlerClass=http.server.CGIHTTPRequestHandler) 5

index.html

python3

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

name.py

python3

1#!usr/bin/env python 2# -*- coding: utf-8 -*- 3 4import cgi 5 6html_body = """ 7<html> 8<head><meta charset="UTF-8"></head> 9<body> 10<p>あなたのお名前は<span style="font-size:48px"> %s </span>さんです!</p> 11</body></html> 12""" 13 14 15form = cgi.FieldStorage() 16 17print("Content-type: text/html") 18print(html_body % form['name'].value) 19

試したこと

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

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

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

投稿2019/01/22 16:10

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RinKawakami

2019/01/22 16:17

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

0

ベストアンサー

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

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

投稿2019/01/22 16:03

set0gut1

総合スコア2413

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RinKawakami

2019/01/22 16:16

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

2019/01/22 16:23

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問