こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Perlスクリプトが、ローカルでは実行できるが、HTTP経由では実行できない

現在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を使ってアクセスしたときのみエラーとなります。

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

投稿日時 - 2005-10-11 22:55:12

QNo.1707609

すぐに回答ほしいです

質問者が選んだベストアンサー

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

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

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

投稿日時 - 2005-10-12 00:51:35

お礼

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

投稿日時 - 2005-10-14 00:28:18

ANo.2

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

エラーログは見ることができますか?
ステータス500 ならばその原因が出ているはずです。

投稿日時 - 2005-10-12 10:02:41

お礼

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

投稿日時 - 2005-10-14 00:29:27

ANo.1

cgi用のディレクトリに置いていないからではありませんか?
URLから見るとDocumentRootに置いているようですが。

投稿日時 - 2005-10-11 23:11:50

補足

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

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

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

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

投稿日時 - 2005-10-11 23:17:50