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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

6313閲覧

Python3にてcgiが実行されない

tatsuya_055

総合スコア13

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/03/04 13:31

お世話になります。
Tatsuyaと申します。

只今"独習Python入門"という本を読みながら
プログラミングの勉強をしているのですが、
cgiを使用したプログラムを作成中に画面が真っ白になり。
思うように動作しない為ご相談させていただきました。。

コードの内容としては、pythonにてWebサーバーを作り、
そこのhtmlの入力フォームに入力されたものをPythonで反映するというものです。

環境はVirtualbox上のCentOS7をGnomeにて使用。
言語はPython3。

これまで、シバンをusr/local/Anaconda3/bin/python3に変更したり、
パーミッションを777に変えてみたり、改行コードをLR、LRCFに変えてみたりと試しましたが結果は変わらずでした。

html

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 soloid #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="submit">送信</button> 20 </form> 21</body> 22</html>

Python

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

Python

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

お手数をおかけいたしますが、
ご教示いただけますと幸いです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

はじめまして。私もPythonを(再)入門しているものです。

只今"独習Python入門"という本を読みながら
プログラミングの勉強をしているのですが、
cgiを使用したプログラムを作成中に画面が真っ白になり。
思うように動作しない為ご相談させていただきました。。

おそらく今まさに本を片手にサンプルコードを試行錯誤されている最中だと思います。

さて動作させている環境、言語のバージョン、ソースコードなど示してくださりありがたいのですが、
残念ながら再現するための手順が書かれていないため、どのように動かないのか判断しかねます。

手元の環境で、以下のディレクトリ構成で試してみましたがソースコードに誤りは見受けられません。

bash

1. 2├── cgi-bin 3│   └── name.py 4├── cgiserver.py 5└── index.html

再現手順

  • ゲストOS(※1)で上記の構成でディレクトリ、ファイルを配置し、
    ディレクトリ直下でpython cgiserver.pyを実行
  • ホストOS(※2)のブラウザよりゲストOSのIP, ポート番号を指定して画面を表示
  • 入力フォームより「名前」を入力し、「送信」ボタンを押下
  • 「あなたのお名前は "入力した名前" さんです!」と結果が表示されることを確認。

今一度、下記のようなことを確認し、試していただけますでしょうか?
解決の糸口になれば幸いです。

(例)

  • HTML, Pythonソースコードの名前、ディレクトリ名称に誤りがないか?
  • ブラウザからアクセスしたとしたら、途中からURLに誤っていないか?
  • ターミナルにエラーメッセージが表示されていないか?
  • 実行している手順に誤りがないか?
  • そもそもVirtualbox上で動かしているはずのCentOS7にちゃんとアクセスできているか?
  • etc...

※1: ここではVirtualbox上にあるOSを指します。
※2: ここではVirtualboxにアクセスしている手元のOSを指します。

投稿2017/03/04 16:40

kashew_nuts

総合スコア163

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

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

tatsuya_055

2017/03/07 10:01

kashew_nuts様 ご丁寧にご回答ありがとうございます! また、手順の記載とお返事が遅れ失礼いたしました。。 ご指摘頂きました箇所を確認いたしましたが、改善がみられず、 ターミナルのエラーメッセージを確認いたしましたところ、 [Permission denied: access to /cgi-bin/name.py denied] と表示されていた為、一旦anybodyにてログインし、/から権限を確認しつつ変更を行い、 anybodyでファイルを実行できるようにいたしましたが、改善されず途方に暮れていると python -m http.server --cgi にてサーバーを起動できるとのことで試してみるとすんなりアクセスできました。 根本的な解決とはなっておりませんが、 一旦コードの挙動を確認できたので、良しとしようと思います。。 コードが動かずとても悩んでいたので、 親身にご回答いただけて大変うれしかったです! また機会がございましたらよろしくお願いいたします。
kashew_nuts

2017/03/07 10:07

直接の解決とはならなかったようですが、動作してよかったです:D ソースコード自体に問題がなくても他の原因で動かないこともあるから難しいですよね… もしよろしければ質問を「受付中」→「解決済み」にして、ベストアンサーも選んでいただけるとまた他につまずいた方がいらしたとき解決の糸口となるかと思いますのでよろしくお願いします。
tatsuya_055

2017/03/07 10:39

そうですね。。 学習を進める程勉強不足が露呈していっております…笑 なにからなにまですみません^^; 「解決済み」となったかと思います! ありがとうございました!
kashew_nuts

2017/03/07 11:40

こちらこそ。ベストアンサーに選んでいただいてありがとうございます!
guest

0

#!/usr/bin/env python

これ、python の前に何でスペース入ってるんですか?
また python はその位置にインストールされていますか?

追記

失礼しました。こういう書き方があるのを寡聞にして知りませんでした。勉強になりました。

投稿2017/03/05 02:35

編集2017/03/05 02:39
Zuishin

総合スコア28660

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

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

tatsuya_055

2017/03/07 10:09

Zuishin様 ご回答ありがとうございました! #! /usr/bin/python こういった書き方もあるんですね! こちらこそ勉強になりました! ありがとうございます!
Zuishin

2017/03/07 10:31

私にベストアンサーがついてますが、間違っていませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問