CGI-BBS > CGI > Perl > ブラウザで表示できません。


カレッヂ
カレッヂ


質問者 futa  投稿日 1/9(火) 01:11:23
CGIの勉強にとまずは以下のようなただHTMLを表示させるスクリプトを書いてみました。

(ファイル名を仮に「test.cgi」)
#!/usr/local/bin/perl5(ここは自分のサーバーでの設定を調べました)

print "Content-type: text/html\n\n";
print "<html><body>\n";
print "hi!\n";
print "</body></html>\n";

これをコマンドプロンプトで「perl test.cgi」とすると
Content-type: text/html

<html><body>
hi!
</body></html>
と一見成功しているかのように思うのですが
ブラウザで表示すると「HTTP 500 内部サーバーエラー」となってしまいます。
ちなみに、パーミッションはtest.cgiは755に、test.cgiのあるディレクトリは777に設定してあるのでこちらは問題ないはずですし・・・悩んでいます。

どなたか考えられる原因をお教えください。
よろしくお願いします。
回答者 まさ  [削除]  投稿日 1/9(火) 13:15:32
正常なように見えますね。

一度shellで「perl -wc test.cgi」とやってみて下さい。
これで文法チェックができます。

Syntax OKとだけ出れば、OKなのですが、困りますね。。。。
回答者 まさ  [削除]  投稿日 1/9(火) 13:24:04
ちょっと思ったのですが、CGIを動かす環境は、プロバイダーによって
決まっている場合があり、それ以外、自分で作ったディレクトリーなどでは
動かない場合があります。

そのようなことはないでしょうか。
あるいは.htaccessを設定しないとCGIが動かないとか?
質問者 futa  [削除]  投稿日 1/9(火) 15:48:01
助言をいただきありがとうございます。

きのう投稿した時点で「perl -c test.cgi」はやっていて「syntax OK」と出たので
「perl test.cgi」と実行したのですが・・・。
「perl -wc test.cgi」も実行してみました。
やはり同じようにエラーはありませんでした。
ところで「-wc」と「-c」どう違うんですか?
手元にあるテキストでは「-c」しか書いてありませんでしたので。

ちなみに「.htaccess」とかの問題はないと思います。
今現在、ここのminibbsを使わせていただいて正常に動いていまして
そのminibbsと同じディレクトリでも表示されなかったので。
予断ですが、minibbsのときはまったくperlの知識ゼロでしたので
文字コードの問題で少し苦戦しました。

しかし、これで原因はまたわからなくなってしまいました。
たぶん、今までの経験では初歩的な?ミス?なのかなあとか・・・
回答者 まさ  [削除]  投稿日 1/9(火) 16:57:46
-wのオプションはWarningレベルのチェックです。
-cではSyntaxチェックしか行いませんが、組み合わせることにより、
Syntax、Warningとチェックを行ってくれます。

だいたい原因がわかりました。
shellで動作して、ブラウザーからはエラーが出る原因は、FTP転送
するときにバイナリーで行っているからです。
アスキーにすれば正常に表示されるはずですよ。
質問者 futa  [削除]  投稿日 1/9(火) 18:51:13
「-wのオプション」の説明ありがとうございました。

今手元に自分のパソコンがある環境ではないので
バイナリ転送してしまったのか確認できません。
(家に帰ってから見てみます)

今はLAN環境なので、自分のディレクトリに直接
(「test.cgi」の内容をコピーして)
別のファイル名にして試してみましたが
やはりブラウザでは表示できませんでした。

このようにすれば、FTPの転送モードは関係なくなると思ったので
やってみたのですが・・・。

コピー&ペーストがいけなかったのでしょうか。
ほんと迷惑かけてすいません。


質問者 futa  [削除]  投稿日 1/11(木) 19:45:08
自分で書いた質問は解けました。
FTPの転送モードではなく、
どうも「改行コード」にあったらしいです。
ローカルニュースに投稿したら教えてくださる方がいました。
使っているサーバーがUNIXなので、
LFにしないと表示できないらしいです。
手元にあるテキストにサーバーのOSに「改行コード」を合わせないけないなんて
書いてなかった気がするのですが・・・。
ブラウザからデータを渡すときに「文字コード」が問題になるのは知っていますけど。

とにもかくにも、まささんどうもありがとうございました。
これでやっとやりたいことが始められます。

返信(回答)する


Web裏技