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

現在Perlスクリプトを作成し
サーバにアップしました。

SSHでサーバにログインし

#perl a.cgi
と実行したところ(CGIとして動作させるため。中身はPerlスクリプト)

Content-type: text/html

<html>
<body>
あああああ
</body>
</html>

のようなメッセージが表示され正常に動作しているとおもいます。

しかし、
http://www.hoge.com/a.cgi をURLとしてブラウザ上で実行すると
500 Internal Server Error
になります。

パーミッションは755で正常
Perlのパスは#!/usr/bin/perlとしており、これも正常です。

文字コードはeuc-jp 改行コードLF

サーバはApache/1.3.33
Perlバージョンは5.8.4

自分のパソコン上でperl+HTTPサーバ(httpd)を使うと
HTMLふぁいるとして出力されます。
サーバ上でHTTPを使ってアクセスしたときのみエラーとなります。

このような現象が起こるのですが原因がわかりません。
お願いします。

A 回答 (3件)

>500 Internal Server Error


これは、パーミッションの問題ではなく、実行エラーですよね。
一行目は以下だけですか? よけいなブランク文字やスイッチとか後ろに付いてると、サーバーによってはエラーにされてしまう事があります。
コマンドライン実行では、スイッチ有効なのでエラーにならないから、こういう現象になるのかも。
#!/usr/bin/perl

※ perl cgi覚えたての頃、一行目の後ろにコメントを付けていて、unix系サーバーにアップするとエラーになったのだけど、原因がわからず四苦八苦した覚えが。。。
windows local サーバーでは、一行目を無視してたので気付くのが遅れた。

あとは、実際のスクリプトの方を見ないことには?
なにか、そのサーバーでは使えないモジュールを使うような指定があったりとかしませんか?
    • good
    • 0
この回答へのお礼

投稿ありがとうございます。無事解決しました。
どうやら、ディレクトリのパーミッションが間違っていたようでした

お礼日時:2005/10/14 00:28

エラーログは見ることができますか?


ステータス500 ならばその原因が出ているはずです。
    • good
    • 0
この回答へのお礼

投稿ありがとうございました
解決しました。

お礼日時:2005/10/14 00:29

cgi用のディレクトリに置いていないからではありませんか?


URLから見るとDocumentRootに置いているようですが。

この回答への補足

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

レンタルサーバ(有料、さくらインターネット)
CGIの使用について以下の記述がありました

ファイルの拡張子 .cgi
(「cgi-bin」ディレクトリは必要ありません)
ファイルパーミッション 705 (または 755)
ディレクトリパーミッション 705 (または 755)
cgi-binディレクトリ 特に必要なし
.htaccess 特に必要なし
推奨するファイルロック関数 flock

DocumentRootにはおいておらず 元からあったwww ディレクトリに設置してあります。

補足日時:2005/10/11 23:17
    • good
    • 0

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