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

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

ただいまの
回答率

90.50%

  • Python

    8489questions

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

  • Apache

    1854questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • Raspberry Pi

    839questions

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

apache2、CGIでpythonが実行されず、 [cgi:error]エラーログが発生してしまいます。。。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 5,176

bin_300K

score 48

Raspberry PiでWebサーバーを構築中ですが、 
apache2、CGI設定をしたところ、 

参考にしたチュートリアル
http://qiita.com/aryoa/items/2c28b466e911a3dd101d

pythonが実行されず、

500Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

と、表示されてしまいます。

エラーログを確認すると、以下のように似たようなエラーログがでてきていました。

※(私のラズパイのユーザー名)は(ユーザー)、(私のラズパイのIPアドレス)は(IP)、と下記記入しています。

[Sat May 14 00:40:18.596773 2016] [cgi:error] [pid 21080:tid 1844442160] [client (IP):49769] AH01215: (8)Exec format error: exec of '/home/(ユーザー)/public_html/cgi-bin/test.py' failed, referer: http://(IP)/~(ユーザー)/cgi-bin/
[Sat May 14 00:40:18.599075 2016] [cgi:error] [pid 21080:tid 1844442160] [client (IP):49769] End of script output before headers: test.py, referer: http://(IP)/~(ユーザー)/cgi-bin/

ちなみにtest.pyのスクリプトは以下です。

#!/usr/bin/python

print "Content-type: text/html"
print
print "<html>"
print "<head>"
print "<title>test</title>"
print "</head>"
print "<body>test it.</body>"
print "</html>"

どなたか改善点わかるかたいらっしゃいますでしょうか。
ご教授いただけますと大変助かります。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • TaichiYanagiya

    2016/05/14 00:57

    test.py ファイルに実行権限は付いていますか?

    キャンセル

  • bin_300K

    2016/05/14 00:59

    $ ls -l 合計 4 -rwxr-xr-x 1 root root 205 5月 14 00:40 test.py と、出ておりますので、大丈夫・・・・だと思いますが、マズイですかね??

    キャンセル

  • bin_300K

    2016/05/14 01:00

    TaichiYnagiyaさま とりあえず、ご協力いただき感謝です!ありがとうございます!

    キャンセル

回答 2

checkベストアンサー

+1

質問には参照したリンクだけでなく、実際に何を行って、どこまではうまくいっているのか、どこからダメなのかを書いてもらったほうが回答者は、問題のありかを絞れると思います。

現在の情報をもとに検索したら次のような記事がヒットしました。

文字コードがちがうとEnd of script output before headers エラー
http://dynamic-one.com/archives/51588699.html
Raspberry Pi でのpython cgi実行
http://raspberrywebserver.com/cgiscripting/writing-cgi-scripts-in-python.html

下のリンクでは、Content-typeの後ろに\n\nが入っています。
文字コードの問題が発生しないように、Raspberry pi上でtest.pyを書きなおしてみてはいかがでしょうか?

#!/usr/bin/env python
print "Content-type: text/html\n\n"
print "<h1>Hello World</h1>"

bik_300Kさんは、いろいろなところを変更して、自分でも混乱しているように見受けられます。ある程度やってうまくいかなければ、信頼のできる記事に沿って、OSの再インストールから始めたほうがいいかもしれません。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/05/14 09:20

    lightsonさま ありがとうございます!まだプログラミングなどに触れて日が浅いので、半日くらいハマってしまうと、非常に焦ってしまい、絶望的な気分になります・・・が、諦めずに頑張ります。

    文字コードの見直しをしてみて、うまくいかなければOS再インストールも覚悟して、頑張ります。ありがとうございます。

    キャンセル

  • 2016/05/14 09:47

    $ sudo chmod +x test.py
    で実行権をつけてみて下さい。

    キャンセル

  • 2016/05/14 11:28

    経過後報告です。文字コードを見直したところ、おかげさまで、無事CGIが動きました! ありがとうございました!

    $ file test.py
    test.py: Python script, UTF-8 Unicode (with BOM) text executable, with CRLF line terminators

    となっているのが、問題となるケースもあるようでしたので、with BOMを消して、CRLF改行を消すと、無事実行されました!!

    ご協力いただきありがとうございました。

    キャンセル

+1

可能性は薄いので解決には至らないと思いますが、僅かな可能性は潰しておきましょう。
それに、今後pythonを使っていくのであれば、知っておいたほうがいいと思いますし。

/usr/bin/pythonのバージョンを調べてください。

/usr/bin/python --version

提示されているtest.pyは、python3では動きません。

print "Content-type: text/html"


は、

print("Content-type: text/html")


と書くべきです。

(ubuntuですらデフォルトは2.7なんだから、3になっているとは思わないんだけどなぁ…)


あと、

/home/(ユーザ)/public_html/cgi-bin/test.py

と、CGIとしてでなくコマンドラインから実行して問題が起きないか確認してみてください。
結構これで問題がわかる事もあります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/05/14 09:17

    katsuko さん ありがとうございます(涙)諦めずに頑張ろうと思います。

    今、いただいたアドバイスを実践してみました。

    まず、バージョンを確認しましたら、2系でしたのでシンタックスは大丈夫そうでした
    ```
    $ /usr/bin/python --version
    Python 2.7.9
    ```

    次にコマンドでパスを入力してみましたら、エラーがでました
    ```
    $ /home/(ユーザー)/public_html/cgi-bin/test.py
    : そのようなファイルやディレクトリはありません.py: 行 1: #!/usr/bin/python
    /home/(ユーザー)/public_html/cgi-bin/test.py: 行 2: $'\r': コマンドが見つかりません
    "rror: no such file ":Content-type: text/html
    /home/(ユーザー)/public_html/cgi-bin/test.py: 行 4: $'print\r': コマンドが見つかりません
    "rror: no such file "<html>
    "rror: no such file "<head>
    "rror: no such file "<title>test</title>
    "rror: no such file "</head>
    "rror: no such file "<body>This is test.</body>
    "rror: no such file "</html>

    ```

    そもそもパイソンコードとして動かないのか!?と思い、次にパイソンで動かしてみましたら、ちゃんと動きました

    ```
    $ python /home/(ユーザー)/public_html/cgi-bin/test.py
    Content-type: text/html

    <html>
    <head>
    <title>test</title>
    </head>
    <body>This is test.</body>
    </html>
    ```
    他のアドバイスいただいた方からの情報から、もしかしたら文字コードに起因する可能性があるかもしれない と、今しらべているところです。経過ご報告でした。ありがとうございます。

    キャンセル

  • 2016/05/14 11:28

    test.pyの改行コードがCR+LF(Windowsでよく使われる改行コード)になっているようです。
    LFに変換してください。
    「改行コード」で調べてください。

    lightsonさんもおっしゃっていますが、ちょっといろんなことをして混乱されているように見受けられます。
    「間違ってはいないのだけど、ちょっと余計なことをしているのでは?」という点も何点かあります。
    (でも、それを突っ込んでまた混乱を招くのも悪いと思って、やめています)

    これまでの質問・回答の中でやってきたことを全て一日で理解しろ、というのは、無理があると思います。
    焦らずに時間をかけて理解するようにしてください。
    頑張ってください。

    キャンセル

  • 2016/05/14 11:45

    おぉ、コメントしている間に解決していたw
    良かったですね。

    キャンセル

  • 2016/05/14 12:04

    katsuko さん 感謝です!ノウハウの点からも、精神面からもほんと助かりました!まさに最後いただいたアドバイスの改行のところがネックになっていたようです。ありがとうございました。

    キャンセル

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

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

関連した質問

  • 解決済

    LimitRequestLineが反映されない

    LimitRequestLineについてご教授ください。 長いリクエストURLを受け付けたくて*.conf ファイルにLimitRequestLine=19000という記述を

  • 解決済

    Google apps scriptで作った関数がエディターでは動くが外部から叩けない

    googleスプレッドシートにスクリプトを追加しAPIとして公開後、auth認証してjavascriptから呼び出してみたのですが、 スクリプトエディターでは動くのに外部から叩く

  • 解決済

    docker-composeでのPostgreSQL接続

    前提・実現したいこと dockerの練習として、docker-composeでpostgresqlを扱おうとしています。 発生している問題・エラーメッセージ 0 info

  • 受付中

    PHPをhtmlファイルとして実行する方法

    前提・実現したいこと htmlファイルでphpを実行したい 発生している問題 http://qiita.com/non0311/items/1114f080603d9007b1

  • 解決済

    ラズパイでGPIOの値を読み取りたい

    前提・実現したいこと ラズパイでGPIOの値を取得したいのですが、ファイルを実行しようとすると次のようなエラーが出ました。 発生している問題・エラーメッセージ /home/pi

  • 解決済

    Apacheの設定が反映されない

    Apacheの設定ファイル /etc/httpd/conf にエラーログを吐き出す場所を指定する項目がありますが、下記のようにエラーログを作成して、試しにさ、くらVPSのCentO

  • 解決済

    UbuntuでDockerを使ったWordPress環境を作りたい

    デスクトップUbuntuでWordPressの開発環境を作ろうと思っています。 見様見真似でDockerを使ってみようと思ったのですが curl: (7) Failed to

  • 受付中

    MySQLに接続できなくなった

    実現したいこと MySQLでユーザを作成したり色々権限を付与したりユーザを削除したりしていたら、MySQLコマンドで接続できなくなってしまいました。どうすればMySQLコマンドでも

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

  • Python

    8489questions

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

  • Apache

    1854questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • Raspberry Pi

    839questions

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