TOP > CGIの設置について > トラブルシューティング

トラブルシューティング

CGIの設置について

技術的なことで、お客様がお困りになられたときの対処法を紹介しています。
私どもに寄せられたトラブル、お問い合わせなどから多数寄せられた内容を
まとめたものです。

Internal Server Error が表示される

Internal Server Error
このエラーメッセージは汎用的ないろいろな用途で使われるメッセージなので、
原因特定は難しいですが、以下のような原因が考えられます。

FTP転送した際に、転送モードが間違っている

FTPソフトの転送には『アスキーモード(テキストモード)』と
『バイナリモード』の2種類があります。
アスキーモードはテキストファイルなどを転送するときに、
バイナリモードは画像ファイルや音声ファイルなどを転送するときに使用します。

CGIスクリプトはテキストファイルなので、
このファイルを転送するときはアスキーモードで転送します。
もしCGIスクリプトをバイナリモードで転送してしまった場合にはこのエラーメッセージになるので、
FTPクライアントの転送モードをもう一度確認してみましょう。

スクリプトを修正する際に誤った記述をして文法エラーが発生している

CGIスクリプトの設定部分をエディタで修正する際に、誤った修正をしてしまい
CGIスクリプトが文法エラーを起こしている場合があります。
行の最後のセミコロン(;)をとってしまっていないか、等

スクリプト先頭行のPerlのパスの記述が正しくない

Perlスクリプトの先頭行には、
"/usr/local/bin/perl"などという「Perlのパス」が記述されています。
これは大変重要な一行です。この記述を誤ると、そのCGIはまったく動きません。
また、この一行の前に空白や改行があっても動きませんのでご注意ください。

シーサイドネットでは、以下のパスが有効になっています。
もう一度確認してみましょう。

"/usr/local/bin/perl"
"/usr/bin/perl"
"/usr/sbin/perl"

パーミッションが正しく設定されていない

FTPソフトを利用してパーミッションを確認してください。
・CGIファイル ・・・701
・CGIが格納されているディレクトリ・・701
・データアイル・・・600
・HTMLファイルなどはそのまま従来どおり644でご利用下さい。

※ CGIファイルで、ファイル内にパスの指定が無いものは、「604」と設定してください。

ページトップへ戻る

Forbiddenが表示される

このエラーが表示される時は、指定されたパーミッションに
問題がある可能性があります。
この場合には、以下のような原因が考えられます。

CGIスクリプトの「実行権」

CGIスクリプトのパーミッションが「755」か「705」に
なっているかどうか確認してみましょう。
CGIとして実行可能なパーミッションは通常「755」か「705」とされています。

CGIファイルを置く場所を間違っている

プロバイダーによっては、CGIファイルを置く場所を
専用ディレクトリなどを設けたりという場合があります。
この場合、CGIファイルを本来置いてはいけないディレクトリに置いてしまうと
CGIの実行権がない為に、このエラーが表示されます。

なお、私どものサーバーでは「public_html」内であれば、
どこにCGIスクリプトを置いても動作させることができます。
ただ例外として、「cgi-bin」や「admin」といった数種類のディレクトリ名は
サーバー側で利用されているため、「public_html」ディレクトリ直下に
置くと、CGIが動かないなどの不具合が生じる恐れがあります。

ページトップへ戻る

中身(ソース)が表示される

または、CGIスクリプトがそのままダウンロード状態になってしまう。
この場合、サーバー側が対象ファイルをCGIファイルとして認識していないことが考えられます。
以下のようなことが考えられます。

CGIを実行するディレクトリ内に所定の「.htaccessファイル」を
設置していないプロバイダーでは、「.CGI」を置くディレクトリの中に
「.htaccessファイル」を置かなければならない場合があります。
「.htaccessファイル」とは、UNIXサーバー上に置く「設定ファイル」のようなものです。
「.htaccess」という名前のファイルをCGIを設置するディレクトリに
置かなければならない。「.CGI」という拡張子のファイルをCGIファイルと
認識させるために以下のように記述します。

AddType application/x-httpd-cgi.cgi

この時注意することは、メモ帳などのエディタで上記の一行を記述した後、
最後に必ず「改行」をして保存してください。
その後、「アスキーモード」でFTP転送し、所定のディレクトリ内に置きます。
また、ファイル名がピリオドで始まっているので、エディタで保存する時や、
FTP転送できないなどの場合は、「htaccess.txt」という名前等で保存し
転送後にディレクトリ内でファイル名を変更してください。

CGIを実行するように、そのサーバー自体、またはそのディレクトリ内が
設定されていない場合は、CGIの使用はできません。
CGIを実行するディレクトリが決められている場合は
定められたディレクトリ内にCGIスクリプトを置く必要があります。

CGIスクリプトの拡張子(.CGIなど)が、CGIファイルとして設定されていない。
この場合、ファイル名を所定の拡張子(.plなど)に変更する必要があります。
プロバイダーのサーバーがWindowsNT(サーバソフトがIISの場合)サーバの
場合に多く見られます。
拡張子を変更する場合CGIファイルを右クリックし、[名前の変更]で「CGI」を「pl」に。
次にファイルをエディタで開き、[スクリプト名]を「xxx.cgi」から「xxx.pj」に変更します。

SSIが動きません

htmlファイルにSSIを記述する場合、ファイルの拡張子を「shtml」にする必要があります。
suExecの影響により、shtmlファイルより上位のディレクトリにあるファイルを、
参照することができなくなるといった不具合がありますのでご注意ください。

ページトップへ戻る