• ベストアンサー

HTTP500内部サーバーエラーと表示されてしまうのですが。

自作プログラムを作ってみたのですが HTTPDを利用してのローカル環境では実行に成功するのですが、 オンライン上で動かそうとするとどのサーバーでも 内部サーバーエラーと表示されてしまうのです。 プログラムは http://person3.rocketbeach.com/~ikariya/bbs_cgi.txt に見ることが出来るようにアップロードしました。 どこかおかしいところがあるでしょうか。 サーバーに負担がかかり過ぎるせいでしょうか?

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

  • ベストアンサー
  • taba
  • ベストアンサー率61% (349/567)
回答No.4

jiri_tさんが動かないとお書きでしたので、私も自分のサーバーで試してみました。動きませんでした。 で、よくみたらPerlのパスが間違ってます。 #!usr/local/bin/perl ではなく、少なくとも #!/usr/local/bin/perl でしょう。 私のところでは動きました。 おそらくこれでしょう。

ikariya
質問者

お礼

勉強不足ですみません。 ありがとうございます。 Perlへのパス部分を直しましたら 動きました。 逆に、ローカル環境で(Win98、HTTP Daemon Ver 1.26b)で 動いていたのが不思議です。 融通が効いてくれていたのでしょうか。 兎にも角にも、悩みが氷解致しました。 ありがとうございます。

その他の回答 (4)

  • jiri_t
  • ベストアンサー率25% (1/4)
回答No.5

tabaさんのいわれる通りだと思います ちなみに SunOSでは /usr/local/bin/perl TurboLinux6.1Serverでは /usr/bin/perl でした

ikariya
質問者

お礼

度々、勉強不足で申し訳ありません。 サーバーによってパスが違う理由まで 御教え頂いて恐縮です。 勉強になります。 本当に、ありがとうございました。

  • Tma
  • ベストアンサー率48% (13/27)
回答No.3

どのような CGI かはわかりませんが、 サーバ側が SUEXEC で起動している場合は CGI の置かれているディレクトリの パーミッションなども注意する必要があります。 SUEXEC が設定されている場合は 他人が書き込み権をもっていると 「500 Internal Server Error!」 と表示されたと思います。 一度確認してみることをおすすめします。

ikariya
質問者

お礼

勉強不足でした。 ありがとうございます。 サーバー毎にパーミッションが大分違うというのは、 セキュリティの関係上と聞いたことがありましたが 理由がわかりました。 ありがとうございます。

  • jiri_t
  • ベストアンサー率25% (1/4)
回答No.2

どのような環境で確認されました? とりあえず私の環境では動かなかったので... サーバーのエラーログが見られれば一番いいのですが。 とりあえずtelnetが使えるプロバイダなら そこで実行してみるといいのですが。 実行権限、perlのパスはあっているか 再確認してください

  • taba
  • ベストアンサー率61% (349/567)
回答No.1

細かくは見ていませんが、ローカルで動いているということなので、コードは間違ってないという前提で。 だいたいこういうケースでよくあるのは、 1.CGIが実行できるディレクトリではない (サーバーで制約をかけている可能性があるので、プロバイダによって異なります) 2.cgiファイル自体の実行権限が無い 3.データファイル(この場合、log.datやcnt.dat)の読み書き権限が無い というあたりですね。 そんなの分かってる!というのであればごめんなさい。 基本ということで。

ikariya
質問者

お礼

サーバーによってはパーミッションの設定が 大分違うということに気付きました。 早々回答を下さいましてありがとうございます。