CGI・SSIが動作しない...そんな方のページです。





はじめようCGI
 
1.CGIとは?
2.SSIとは?
3.プロバイダに確認しよう

設置前のサポート
 
1.ダウンロード〜解凍
2.初期設定
3.Perlのパスって?
4.絶対・相対パスって?
5.16進数ってなに?
6.ファイルの転送
7.パーミッションの設定

設置後のサポート
 
1.サーバエラーになる
2.エラーメッセージ一覧
3.書き込みが出来ない
4.SSIが動作しない
5.同じCGIを2つ設置したい

1 サーバエラーになる

  • Perlまでのパスが間違っている。

    スクリプトには必ず1行目にPerlまでのパスが記述されています。
    #!/usr/local/bin/perl
    これを「Perlまでのパス」といいます。
    これが間違っていると絶対にCGI・SSIは動作しないので注意してください。

    このパスはプロバイダによって異なります。
    たいていは上記のパスですが、プロバイダに確認するようにしましょう。

    また、「Perlまでのパス」は、必ず1行目に書く必要があります。
    これはお約束なのでどうしようもありません(^_^;
    文字と文字の間に空白を入れたりすると、同じくエラーとなってしまいます。


2 エラーメッセージ一覧

  • 403 Forbidden

    このメッセージは、ファイルのパーミッションに問題があることを示します。


  • 404 Not Found

    このメッセージは、指定されたファイルが存在しないことを示しています。


  • 500 ServerError

    このメッセージは指定されたファイルの実行の際に、
    なんらかの 問題が発生したことを示しています。


  • Error 500:Server doesn't support POST または 501 Not Implemented

    クライアントの要求をサーバがサポートしていない時のメッセージです。


  • Error500:Bad Script Request

    CGIスクリプトが実行可能になっていません。


3 書き込みが出来ない

  • ログファイルまでのパス(または名前)が間違っている。

    スクリプト内で指定した、ログファイルまでのパスが間違っていないかチャックしましょう。
    以下はパスの指定の仕方を説明した例です。参考にしてください。


    [www]┐ ├ index.html | └ [cgi-bin] ┐ ├ test.cgi | └ [data] ┐ └ test.dat

    この場合ですと、test.cgiから見たtest.datまでの相対パスは、

    ./data/test.dat

    のようになります。
    また、index.htmlから見たtest.cgiへの相対パスは、もうお分かりと思いますが、

    ./cgi-bin/test.cgi

    となります。


  • ログファイルの属性が間違っている。

    ログファイルの属性(パーミッション)は、「その他」の人も書き込むため、
    <666>である必要があります。


  • ログファイルが存在しない。

    ログファイルそのものが存在しない場合も考えられます。
    ログファイルは、初めは空のテキストファイルなので、あなた自身で作ることも可能です。
    メモ帳などで何も書かずに「新規保存」をすればOKです。
    名前(拡張子も含む)は、スクリプトで指定したファイル名に合わせて
    変更することを 忘れないようにしましょう。


4 SSIが動作しない

  • SSIが使えないプロバイダである。

    この場合はどうしようもありません。
    SSIが使えるかどうかはプロバイダに問い合わせてみてください。


  • 「.htaccess」の記述が間違っている。

    多くのプロバイダでは、「.htaccess」というファイルで、
    CGI/SSIの動作設定が出来るようにしています。以下を参考にしてください。

    「.htaccess」に以下の記述がされているかチェックします。
    AddType text/x-server-parsed-html .html
    AddType text/x-server-parsed-html .html/
    AddType text/x-server-parsed-html .html
    AddType text/x-server-parsed-html .html/
    もし記述がされていなければ、上記の文を記述してください。
    この場合、「.html」と「.htm」 の拡張子を持つファイルが、SSI使用可能となります。


  • 「.htaccess」 のファイル属性が間違っている。

    「.htaccess」のファイル属性(パーミッション)は、
    「その他」の人も見ることが出来ないといけないので、<644>にしてください。


  • SSIを動作させるファイルの拡張子が「.shtml」でなければならない。

    たまに拡張子が「.shtml」でなければSSIが動作しないプロバイダがあります。
    プロバイダに問い合わせるなどして、必要であれば拡張子を変更してください。


5 同じCGIを2つ設置したい

  • 同じCGIを複数設置したい場合はどうすればいいのだろう。

    CGIを設置して、サイトの規模も大きくなると、 こういった疑問が出てくるかも知れません。
    もちろん、同じCGIを複数設置することは可能です(^_^)
    やり方としては、次の2つがあげられます。


  • ファイル名を変えて設置する。

    同じディレクトリにどうしても複数設置したい場合、ファイル名が同じだと、
    ファイル名の競合というのが起きてしまいます。
    これを避けるためにどちらかのファイル名を変更して、競合を避けます。

    例えば2つのHTMLページに別々にカウンタを取り付けたい場合、次のようにします。

[www]┐ ├ one.html ├ two.html | └ [cgi-bin] ┐ ├ counter1.cgi ├ counter2.cgi | └ [data] ┐
├ count1.log └ count2.log



  • ディレクトリを作りその中に設置する。

    各CGIを別々のディレクトリ内に設置するという手もあります。
    この場合は次のようになります。

    [www]┐ ├ one.html ├ two.html | └ [cgi-bin] ┐ ├ [counter1] ┐ | ├ counter.cgi | | | └ [data] ┐
    | └ count.log | └ [counter2]┐ ├ counter.cgi | └ [data] ┐
    └ count.log