プロが教える店舗&オフィスのセキュリティ対策術

CGIを組み、自分のコンピューターでAPACHEを使ったテストでokなことを確認してからサーバーに上げてみたのですが、「500 Internal Server Error」が出てしまい動作しません。
サーバーへの転送時にアスキーモードで送る、文字コードはEUCである、属性は正しいか、Perlのパスは正しいか、必要なファイルは全てそろっているか、についてはチェックしてあるのですが動作しません。
もちろんPerlソフトを使っての構文チェックもしてあります。
これ以外になにか考えられることはあるでしょか。
あったら教えて下さい。よろしくお願いします。

ちなみに「CGIデバッグ」で検索した過去のQ&Aは全て参照しました。

A 回答 (4件)

そのCGIが使うほかのファイル(データファイル、インクルードファイル)の属性とか、それらのつまっているディレクトリの属性、そもそもそのディレクトリでCGI動作可能なのかどうかなどが考えられますが・・・



最後はプロバイダにお願いして、エラーログの内容を教えてもらうしかなさそうですね。
    • good
    • 0
この回答へのお礼

お言葉どおり、プロバイダ-に問い合わせてたら「Perlのバージョンが違うんじゃないか」というお答えを頂きました。ハイホーはPerl4に対応しているのだが、あなたはPerl5の文法を使っているみたいです、と。
で、Perl4の文法で書き直したところ、正常に動作しました。
ありがとうございました。

お礼日時:2001/01/31 23:02

サーバー側の問題の可能性があります。

実際正しいCGIが上記のようなエラーを出すのを見ます。
このような場合、根本的な対策方法はなかったと思いますが、mod_perlが入っていない場合は入れれば解決する場合がよくあるらしいです。
    • good
    • 0

「500」というエラーコードは、httpサーバがcgiを実行しようとしたら、正常に動作を完遂しなかったときに発生するエラーです。

質問中では、

・属性
・Perlのパス
・Perlの文法
・必要ファイルの有無

について確認済みとありますが、このうちのどれかが原因のはずです。
もう少し詳しいことが分からないとはっきりしたことは言えませんが、おそらくは、自宅の環境とサーバの環境が異なることによるエラーが発生しているのでしょう。されに具体的なチェック項目としては、

・Perlのversionは正しいか?
・Perlでモジュールを使用しているか?使用しているならば、サーバにはそのモジュールが準備してあるか?
・httpサーバの権限に合わせたパーミッション(属性)の設定になっているか?
・Perlスクリプトの中で、システムに依存した関数を利用していないか?(シェルコマンドを呼び出したり、OS固有の機能を使用したり)

などがあげられると思います。
そうそう、エラーコードについて調べるときは、
「RFC2068、HTTPエラーコード」
などをキーワードにして検索するといいですよ。

参考URL:http://www.goo.ne.jp/default.asp?MT=rfc2068+http …
    • good
    • 0
この回答へのお礼

さすが専門家、スルドイですね。
御指摘の通り、Perlのバージョン違いが原因でした。
また一つ勉強になりました。

お礼日時:2001/01/31 23:04

一応念のためですが、WindowsからFFFTPで、ローカルの


ファイルがEUC以外の文字コードで、EUCに変換しながら
アップロードすると、何故か化け化けになります。エデ
ィターの段階でEUCのまま記述して、コード無変換でアッ
プロードじゃないと壊れて動かない事があります。

> 属性は正しいか、

これは本当に使っているサーバーの仕様通りに設定して
いますか?スクリプトの置いてあるディレクトリに対し
て、オーナー以外に書込み属性を付けるとセキュリティ
ー上の配慮でcgiを動作しない設定にしてある場合があ
ります。更に、705じゃないと受け付けないという設定
のサーバーもあります。そこの確認はされましたか?

marimo_cx
    • good
    • 0

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