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

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

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

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

Q&A

解決済

2回答

2378閲覧

CGIサーバー動作時のリクエストエラーについて

Uka

総合スコア28

CGI

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

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

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

0グッド

0クリップ

投稿2021/06/06 16:39

編集2021/06/07 04:39

前提・実現したいこと

ラズパイ上でCGIサーバーを動かしたいと考えています。そこで、下記サイトにあるプログラムを参考にしてラズパイ上で動かしてみましたが、エラーとなり画面上に何も表示されません。何が原因かご教示いただけますとありがたいです。ちなみに、Windows上では問題なく動作しています。

参考サイト:
https://techacademy.jp/magazine/21488
「PythonでCGIスクリプトを書く方法【初心者向け】」

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

コード ``` エラーメッセージ

pi@raspberrypi:~/cgitest2 $ python -m http.server 8000 --cgi
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
127.0.0.1 - - [07/Jun/2021 00:49:15] "GET / HTTP/1.1" 304 -
127.0.0.1 - - [07/Jun/2021 00:49:21] "POST /cgi-bin/sample.py HTTP/1.1" 200 -

Exception happened during processing of request from ('127.0.0.1', 49688)
Traceback (most recent call last):
File "/usr/lib/python3.7/http/server.py", line 1170, in run_cgi
os.execve(scriptfile, args, env)
PermissionError: [Errno 13] Permission denied: '/home/pi/cgitest2/cgi-bin/sample.py'

### 該当のソースコード ```ここに言語名を入力 #cgitest/index.html <html> <body> <form action="/cgi-bin/sample.py" method="POST"> <input type="text" name="foo"> <input type="text" name="bar"> <input type="submit"> </form> </body> </html> cgi-bin/sample.py
#cgitest/cgi-bin/sample.py #!/usr/bin python3 # -*- coding: utf-8 -*- import cgi import cgitb cgitb.enable() print("Content-Type: text/html") print() form = cgi.FieldStorage() for key in form: value = form[key].value print('<p>%s: %s</p>' % (key, value))

試したこと

sample.pyのパーミッション変更(755)

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

タイトルが間違っています。CGIサーバーの起動時にエラーになっているわけじゃなくて、起動は正常で、その後のリクエストのエラーです。

PermissionError: [Errno 13] Permission denied: '/home/pi/cgitest2/cgi-bin/sample.py'

なので、アクセス権のエラーです。
1行目が、#!/usr/bin python3なので、/usr/binというディレクトリを実行しようとします。ディレクトリはプログラムじゃないです。

投稿2021/06/06 17:15

otn

総合スコア85901

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

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

Uka

2021/06/07 04:44

ご回答ありがとうございました。参照先がディレクトリになってしまっていたとのことですね。pyhon3の前にスラッシュを入れて実行したら動作できました。ありがとうございました。
guest

0

シバンが#!/usr/bin python3になっています。
#!/usr/bin/python3に直せば動くのでは。

投稿2021/06/06 17:03

itagagaki

総合スコア8402

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

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

Uka

2021/06/07 04:46

ご回答ありがとうございます。スラッシュを入れたら問題なく動きました。アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問