アプリ版:「スタンプのみでお礼する」機能のリリースについて

ApacheでCGIが動きません。
初心者なもので、どこでつまづいているのかもあいまいです。

実行したいファイル /var/www/html/test.cgi

#!/usr/bin/perl
print "HELLO WORLD";

http://(ipアドレス)/test.cgi としてサーバ上に出そうとすると
500 Internal Server Error となります。
Apacheのエラーログは
End of script output before headers: test.cgi と出ます。
コマンドラインでcurlでも同様の結果です。


試したこと
・Apache2.confの編集
  AddHandler cgi-script .cgi 追記
  ディレクトリ内のオプション Options Indexes FollowSymLinks ExecCGI
・Apache再起動
・ソース一行目のperlのPATHの確認
・ソースの文法チェック
・SELINUXが作動していない
・Firewallは開いている
・権限はファイル、ディレクトリ共に755
・コマンドライン上でperlは使える

なお、http://(ipアドレス) とすると以前私が入力した「hello」という文字だけ出てきます。
これがどのファイルを参照しているのかも不明です。

追加で必要な情報があれば教えてください。
何かご存じのかた、どうぞよろしくお願いいたします。

【環境】Ubuntu5.4.0
perl5
Windows10上で仮想マシン使用

A 回答 (2件)

CGIにするには、ちゃんとCGIの規則にしたがった出力する必要があります。


つまり、Linuxのシェルで単独で実行したら

ヘッダ
改行だけの行( ヘッダの終わり)
本体

と出力されるようなプログラムでなければなりません。

対して、そのプログラムは改行無しに「HELLO WORLD」と出力するだけなので

End of script output before headers
スクリプトの出力が、ヘッダが出力される前に終わってしまった

とエラーになっています
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

#!/usr/bin/perl
(改行)
print "HELLO WORLD";

とするという認識でよろしいでしょうか?
これで試してみましたが500のエラーのままでした。

お礼日時:2020/10/28 00:37

>とするという認識でよろしいでしょうか?



違います。
『HTTPレスポンスヘッダ』について調べましょう。
    • good
    • 0
この回答へのお礼

できました!ありがとうございました!本当に助かりました。

お礼日時:2020/10/28 14:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています