■エラー500で、Internal Server Errorとなる。

[原 因]

Apacheで、エラー500で「Internal Server Error」となる原因としては、以下が考えられる。

  1. CGIの先頭にあるperlへのパスが誤っている。

  2. CGIそのものに問題がある。

  3. CGIの改行コードが違っている。(Linuxのみ)

[対 策]

  1. CGIの先頭にあるperlへのパスが誤っている。

    インターネットで流通しているフリーのCGIの多くは、perlへのパスは、「#!/usr/local/bin/perl」となっている。しかし、例えばRedHat標準のperlのパスは、「/usr/bin/perl」であり、修正が必要である。
    CGIを使用する場合は、まず、perlへのパスを確認し、自分のシステムに合わせること。

  2. CGIそのものに問題がある。

    この場合、切り分けのため下記のような簡単なテスト用CGIを、「test.cgi」等の適当な名前で元のCGIと同じ場所に置いてアクセスしてみるとよい。このCGIは、おやじがプロバイダのサーバに置いてDDNSの更新に使用しているCGIで、DiCEにスクリプトとして登録しているものである。アクセス元のアドレスを返送するだけの簡単なものである。このCGIにアクセスしたとき、「Your_IP=xxx.xxx.xxx.xxx」とアクセス元のアドレスが表示されれば、元のCGIが壊れているか、改行コード問題等で実行できなくなっているので、調査する。

    [テスト用CGI例]
    #!/usr/local/bin/perl
    print "Content-Type: text/html\n\n";
    print "Your_IP=$ENV{'REMOTE_ADDR'}\n";

  3. CGIの改行コードが違っている。(Linuxのみ)

    Windowsの改行コードは「CR+LF」、これに対してLinuxの改行コードは「LF」のため、たったこれだけですが、CGIは動いてくれない。対策としては、エディタで改行コードを変更する方法あるが、もっと簡単には、FTPクライアントで、CGIをアスキーモード又はテキストモードで転送すれば、OSに応じて自動変換してくれるので、この方法でもよい。


Top Pageへ     戻る