CGI設置時に500エラーになる原因と対処法

このQ&Aのポイント
  • CGIを設置しようとしたところ、500 Internal Server Errorになってしまいます。共用サーバーIDを使用している場合、CGIファイルをcgi-binディレクトリに配置する必要があります。また、パーミッションや改行コードの設定も確認する必要があります。
  • CGIファイルのディレクトリやファイル名に誤りがないか、正しく指定されているかを確認してください。CGIファイルのパーミッションは755に設定し、改行コードはLFに設定することが推奨されています。
  • 他の原因として、CGIスクリプト内に文法エラーがあるか、必要なモジュールがサーバーにインストールされていない可能性が考えられます。エラーログが表示されない場合は、サーバープロバイダに問い合わせて詳細な情報を取得してください。
回答を見る
  • ベストアンサー

CGI設置時に500エラーになります

CGIを設置しようとしたところ、500 Internal Server Error になります。 共用サーバーIDを使用しています。 CGIファイルは「cgi-bin」の中に入れています。 たとえばこんな簡単なCGIでテストしたのですが、500 Internal Server Errorになってしまいます。 ↓ #!/usr/local/bin/perl print "Content-type: text/html \n\n"; print "Hello"; #!/usr/local/bin/perlを #!/usr/bin/perlにしても結果は同じです。 (サーバーの指定は#!/usr/local/bin/perl) パーミッションは755にしています(705に変えてもダメでした)。 CGIファイルの改行コードはLFにしており、テキスト(ASCII)モードでアップロードしています。 それでも500 Internet Server Errorになります。 サーバーではエラーログが見られないのでみなさんにお聞きしたいのですが、他にどんな原因が考えられるでしょうか?

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

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6642/9410)
回答No.2

500 Internal Server Error はperl文法ミス以外にも、ヘッダの出力し忘れ、パーミッション設定異常などいろんな原因で出ます…。 でもお書きのスクリプトでこちらではそのまま実行できてしまいますので、今回はパーミッションでしょうか。 705でダメでしたら、最悪700で実行できませんでしょうか…。 cgi-binディレクトリを自分で作成したのだったら、ディレクトリのパーミッションも755であるかどうか確認してみてください。 また、次のページのCGIを入れると、転送したperlスクリプトの文法チェックができます。 すぐ使えるCGI: Perl文法チェック & 環境調査CGI http://sugutsukaeru.jp/support/84/index.html 先頭の #! を自分の環境にあった物( #!/usr/local/bin/perl )にして、パーミッションを755・705・700いずれかでは実行できると思います。 まあ、文法チェックには、いちいち転送してから確認するより、ローカルのperl環境を作った方が簡単ですが。 (perlインストール後、「perl -c (スクリプトファイル)」を実行。) ActivePerl Download http://www.activestate.com/activeperl/downloads

magokoro800
質問者

お礼

こんな便利なCGIがあったんですね! ありがとうございます。

その他の回答 (1)

  • wakatonsx
  • ベストアンサー率28% (234/828)
回答No.1

それはまずサーバーのCGI設置条件を確認するしかありません。 500エラーは文法が間違っているエラーです。 .htacsessの設定が必要とか様々です。 サーバーのCGI設置に関する注意事項を確認しましょう。

関連するQ&A

  • cgiの500エラー

    OSXを使っている者です miで文字コードEUC 改行コードLFです #!/usr/bin/perl print "hello"; と書いてtest.plで保存して パーミッションをchmodのコマンドで755 にして共有を可能にしてローカルで試したんですが ソースが表示されて全然有効になってないみたいです PHPもそうでした .phpで書いてhtmlの中に埋め込んで パーミッションも755にしてもソースが全部表示されて動かなかったです 拡張子は.plではなくてcgiなのか気になります ソースも違ってたら教えて下さい ちなみにwebサーバーで試したら Internal Server Error 500でしたftpでchmodで755にしたんですが もしかしてソースミスでしょうか? CGIのソースなどやり方の一覧を詳しく簡潔に教えて下さい御願いします

    • ベストアンサー
    • Perl
  • サクラのレンタルサーバーです。CGIが動きません

    サクラのレンタルサーバーを借りました。 早速CGIを試そうと思ったのですが、原因不明のInternal Server Errorが出ます。 cgi-binはいらないとのことですので、wwwにそのまま入れました。 index.htmlも同じ場所にありそれは出ますのでパス間違いではないです。 またパーミッションも777にしてみましたが駄目です。 #!/usr/local/bin/perl print "Content-Type: text/html\n"; print "\n"; print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; こんな感じで、TELNETでログインして実行も出来ます。 bash-2.05b$ ./index.cgi Content-Type: text/html <html><body>abc</body></html>bash-2.05b$ いろいろ調べたのですが ◆パーミッション→OK ◆TELNETで実行してみる→OK ◆perlへのパスは?→/usr/local/bin と /usr/bin どちらでもいいそうです。験しに変えましたが状況変わらず。 何か気が付いたことがあれば教えてください

    • ベストアンサー
    • CGI
  • サーバを移行したのですが、プログラムが動きません。

    はじめまして。 Perl超初心者です。 先日、あるサイトのリニューアルをし、PHPでシステムを組んだのですが、一部のコンテンツに関しては、前の業者がPerlで組んでいたシステムをそのまま転用することになりました。 そこで、以前のデータを貰って、サーバのcgi-binのフォルダにそれらのデータをコピーし、関係すると思われるファイルのパーミッションを、755にし、 また、以前は、ファイルの一行目が、#!usr/local/bin/perl だったのですが、 これを、#!usr/bin/perl に修正しましたが、動いてくれません。 Internal Server Error と出てしまいます。 試しに、単純な text.cgi #!/usr/bin/perl print "Content-Type: text/html\n\n"; print "OK"; というファイルを置いてみたのですが、これは動いています。 ちなみに、移行しなければならないcgiファイルは、プログラムの中で、.pl ファイルを複数読み込んでいるのですが、このファイルのパーミッションは、755で良いのでしょうか? また、このプログラムでは、 cgi-bin のディレクトリから、 data というディレクトリの中にある.datファイルを読み込むはずなのですが、このdataというディレクトリは、cgi-binと同階層に置けばよいでしょうか? Internal Server Errorというエラーは、どういうときに出るエラーなのでしょうか? 色々ファイルを操作しても、このエラーしか出ないので、どう対処してよいかよく分かりません。 不勉強で大変心苦しいのですが、 ご回答よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • CGIが動きません

    uranai.cgiのパーミッションは755です。 #!/usr/local/bin/perlではなく #!/usr/bin/perlを使っていますが、 これはサーバの説明にありました。 下記URL内の3ファイルをCGIフォルダに格納して サーバにアップしましたが、エラーになります。 cgi-binにする必要はないとのサーバ設定の記述にありました。 動かない理由がお分かりの方は、ご教授いただけると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • TOK2で基礎的なCGIをUPしたが動かない。

    TOK2(http://tok2.com/)に「posttest2.cgi」をUPしました。 ファイルマネージャで確認すると、CGIのパーミッションは700、 CGIを設置するディレクトリーのパーミッションは701です。 以下 posttest2.cgiです。 -------------------START----------------------- #!/usr/bin/perl print "Content-Type:text/html\n\n"; print "<html>\n"; print "<head><title>テスト</title></head>\n"; print "<body>\n"; print "TEST"; print "</body></html>\n"; ------------------- END ----------------------- IEでこのCGIを開くと「500 Internal Server Error 」になってしまいます。。 なにが悪いのでしょう?

    • ベストアンサー
    • CGI
  • 500 Internal Server Error

    500 Internal Server Errorが出ます。 サーバ:CentOS6.4 サーバ側の文字コード:UTF-8 perlのパス:/usr/bin/perl index.cgiの文字コード:LF (サーバ上で直接作成) index.cgiのパーミッション:777 (パーミッションの問題を避けるためわざと、777に設定) ここで、サーバ上で直接実行 perl /var/www/html/index.cgi すると、正しく処理の結果が返ってきてエラーは出ません。 しかし、クライアントのブラウザでindex.cgiにアクセスすると、500 Internal Server Errorが出ます。 なお、index.cgiを設置するディレクトリはApacheで以下のように設定しcgiスクリプトを有効にしています。 <Directory “/var/www/html”> Options FollowSymLinks ExecCGI </Directory> AddHandler cgi-script .cgi .pl #AddDefaultCharset UTF-8 ******************************************************* 【/var/www/html/index.cgi】 #!/usr/bin/perl print "Content-type: text/html"; print "<html>"; print "<body>"; print "<p>"; print "CGI"; print "</p>"; print "</body>"; print "</html>"; スクリプトの文法に問題があれば、サーバ上で直接実行させた時点でエラーを吐きそうですし、 パーミッションは777にしていますし、Apacheの設定もcgiを有効にしているので 他に500 Internal Server Errorが出る原因が掴めません。 Apacheの設定で、#AddDefaultCharset UTF-8 として文字セットを無効にした場合は CGIスクリプトの方で何か追加してやらないと、文字化け以前の問題で必ず500 Internal Server Errorを吐くんですかね? ご指導のほどよろしくお願い致します。

    • ベストアンサー
    • CGI
  • DebianのApache(掲示板)CGIエラー 500エラー

    debianでkent-webさんのASKA BBSを使いたいんですが うまくいきません http://www.kent-web.com/bbs/aska.html aska BBS rootで/lib/usr/cgi-binに移動してvi test.cgi ------------------------------- #!/usr/bin/perl print "Content-type: text/html \n\n"; print "Hello"; -------------- を試して http://192.168.1.12/cgi-bin/test.cgi は動くんですが which perl /usr/bin/perlです パスはあっています 本題のBBSをデスクトップにDLし tar -xvzf 解凍をし rootで/usr/lib/cgi-bin/に aska.cgi askalog.dat jcode.plを置き パーミッションをhttp://www.kent-web.com/bbs/aska.htmlにあわせて わらかないのでsuEXECサーバ CGIWrapサーバ用のパーミッションと一般サーバを両方ためしてみたんですが http://192.168.1.12/cgi-bin/aska.cgi?mode=checkで試したんですが 500エラーがてしまいます ちなみにaska/aska.cgi?mode=check のaskaフォルダは作らず cgi-bin/aska.cgiです かわらなそうなので http.confの設定は <IfModule mod_alias.c> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # # "/usr/lib/cgi-bin" could be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory /usr/lib/cgi-bin/> AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> </IfModule> AddHandler cgi-script .cgi .sh .pl ちゃんと#を外してあります それとほかの質問者の方を参考にしたんですが mod_aliasなんたら モジュールとかよくわからず apt-cache search module cgiなどといろいろ探したんですが無く これのperlのパスをわざと間違えさせてやっると500でエラーが出るってことはちゃんと動いてるはずだと思うんですが ちゃんともどすとhelloと表示されます 間違えーー>#!/hogehoge/hogehge/perl 元-->#!/usr/bin/perl #!/usr/bin/perl print "Content-type: text/html \n\n"; print "Hello"; それと疑いがあるのが aska.cgiのパスはちゃんと/usr/bin/local/perlを whichでみたperlのパス /usr/bin/perlに設定したんですが 動かないみたいです もしかしてgnome-text-editorなどviで開くと文字コードがかわったりしてだめなんでしょうか? もう思い当たる節がありません どなたか詳しい方教えてくださいお願いします

  • cgiが動きません。。。

    つい最近、perlを勉強し始めた超初心者です。 ローカル(?)でcgiを作成したり、動かしたりしていたのですが、ホームページを開設してみようと思い立ちました。 早速、開設はしたものの、問題のcgiがまったく動いてくれません・・・ プロバイダはbiglobeです。まず、テスト用として「kantan.cgi」を用意しました。中身は #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "Hello world\n"; exit; です。ローカルではきちんと表示されます。 biglobeのwebFTPで「/public_html」に転送後、パーミッションを755に変更しました。 「http://www7a.biglobe.ne.jp/~*****/kantan.cgi」を開くと、「ページを表示できません」と表示されてしまいます。 「HTTP 500 - 内部サーバー エラー 」と書いてありますが、私には何のことだかサッパリわかりません。 アドバイスをいただけると助かります。よろしくお願いします。

    • ベストアンサー
    • CGI
  • メールフォームCGIの設置について

    下記のサイトのメールフォームCGIをさくらインターネットのサーバーで設置したいのですが、うまく作動せず送信できません。 前にロリポップサーバーで設置したところ、作動し送信も問題なくおこなえたのですが、パーミッションやそれぞれのファイルの中身までロリポップで設置したものとまったく同じファイル・条件でさくらインターネットのサーバーに設置したのですが「500 Internal Server Error」がでてしまい、送信できません。 CGIの提供先は下記になります。 http://pgd.jp/cgiscript.html さくらインターネットのパスなどは下記の通りです。 Perl:5.8.x perl:/usr/bin/perl sendmail:/usr/sbin/sendmai CGIの動作環境は下記の通りです。 Perl5 # /usr/sbin/sendmail が使えること # モジュール HTML::Template, Jcode が動作すること 色々試してはみたのですが、CGIやPerlの知識はほとんどありませんので結局何をやってもだめでした。 パーミッションの設定やファイルのアップロードは間違いなくできております。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 自作CGIで、wwwサーバーエラーがでてしまいます。

    AN HTTPDとAPATHEの両方で試していますが AN HTTPDの方はサーバーが見つかりませんと表示されて、 APACHEの方は、Internal Server Error(500)と表示されてしまいます。 ActivePerlの設定変更も間違えないですし、 単にテスト用の文字表示CGIすら表示されません。 どうしてでしょうか? ちなみにPerlの関連付けも出来ていて、ファイルもきちんとPerlで表示されています。 実行内容はとりあえずテスト用で以下のとうりです。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<head></head>\n"; print "<h1 align="center">CGI動作テスト!!</h1>\n"; print "</html>\n"; __END__ 今独学で自作CGIやWEBサーバー運営の勉強をしながら立ち上げています。 どなたか詳しい方、力になって下さい。 直接メールや電話でサポートして下さる方も いらっしゃいましたら、どうかお願いいたします。 どうぞ宜しくお願いいたします。

    • 締切済み
    • CGI