CGIが動かない!と思ったら -- トラブルシューティング --

サポート掲示板へ




  1. CGIの一行目、Perlのパスはサーバーの要求どおりになってますか?
    #! /usr/local/bin/perl, #! /usr/bin/perl, #! /bin/perl, #! c:/perl/bin/perl 等。
    これが正しくなければ500 Errorになります。
  1. FTPでの転送はASCIIモードになっていますか?
    Binaryモードで転送した場合は500 Errorになります。
  1. 文字コードはShift_JISになっていますか?
    Perlのパスをエディタで修正した時に知らない間にEUC-JP等に変更されている場合があります。
    Shift_JISでないと4xx Error, Syntax Error, 画面が文字化け、画面が真っ白で何も表示されない、等の症状がでます。
  1. Perlのバージョンは5.6以上ですか?
    5.6以下の場合500 ErrorやCompile Errorになります。その場合以下のことを試して見ましょう。
    • 「use strict;」をコメントアウト。
    • 「our 」を削除。
      例:「our $datafile = "filename.dat";」を「$datafile = "filename.dat";」
    この修正後に「Undefined subroutine CGI::cgi_error」や「Undefined subroutine CGI::Vars」が出るようでしたらCGI.pmが古いバージョンです。更に対応させるにはスクリプトの修正箇所が多くなりますのでサーバー管理者にPerlのバージョンを5.6以上に、CGI.pmを最新に上げてもらうようお願いしましょう。CGI::Carp.pmが古いバージョンではエラーメッセージが表示されずCompile Errorになります。
  1. 必要とされるPerlのモジュールはインストールされていますか?
    「Can't locate GD.pm in @INC」や「Can't locate Crypt/CBC.pm in @INC」のようなエラーメッセージが出るとPerlのモジュールがインストールされていません。サーバー管理者にインストールして貰うようにお願いしてください。
    モジュールチェッカー」でサーバーにインストールされているモジュールを簡単にチェックすることができます。
  1. CGIのダウンロードは正しくされていますか?
    CGIのダウンロードはCGIのリンクを右クリックで「ファイルを保存」でもテキストを表示させてページを保存でも表示されたテキストをコピー&ペーストでもかまいません。ファイルの最後までダウンロードされているか確認してください。正しくダウンロードされていない場合、500 Error, Syntax Error等になります。
    スクリプト比較」でダウンロードしたスクリプトが当サイトで公開されている物と同一であるかチェックできます。
  1. CGIのパーミッションは正しく設定されていますか?
    サーバーのセキュリティポリシーによってある設定でないと動かないようになってる場合もあります。サーバーの要求に沿うように設定してください。一般的には755、705等で動きます。この設定が正しくないと500 Error等になります。
  1. CGIを置いてあるディレクトリのパーミッションは書き込み可能に設定されていますか?
    CGIが実行されると各種ファイルを作成します。それらのファイルがCGIのユーザーから作成できるようにディレクトリのパーミッションは書き込み可能になっている必要があります。一般的には777, 707等です。サーバーによっては755でないと動かないということもあります。この設定が正しくないと管理用パスワードを設定してもまた入力を求められることになります。正しいディレクトリのパーミッションをサーバー管理者にサーバー管理者にお問い合わせください。
  1. データ保存ディレクトリのパーミッションは書き込み可能に設定されていますか?
    管理人設定で指定したデータファイル、データディレクトリ等が保存されるディレクトリのパーミッションはユーザーが作成できるように書き込み可能になっている必要があります。一般的には777、707等です。この設定が正しくないとCGIの書き込みフォームより「書き込み」や「登録」ボタンをクリックしても書き込みできません。
  1. 【質問】管理人設定ページよりタイトルに「出欠表」と設定するとエラーになってCGIが動きません。何が原因でしょうか?
    実はShift_JISの弊害で「表」という2バイト文字の後ろの1バイトが「\(半角バックスラッシュ)」と同じコードなのでクォートしている''等の最後がエスケープされてしまいSyntax Errorの元となります。「表」の後に半角スペースを入れることで回避できます。以下のような文字の後ろ1バイトもなんかしらの特殊文字と重なりますので注意が必要です。圭、ー、望、評、従、転、余、ゾ、犠。
  1. 【質問】メール送信機能があるCGIで携帯にだけメールが送信できません。PCには正常に届いてるようです。なぜでしょうか?
    携帯メールはプロバイダによって差出人不明のメールを受信拒否するように設定してある場合があります。また、差出人が明確であっても受取人本人や携帯メールプロバイダの設定でPCからのメールを受信拒否にしてある場合があります。CGIからのメールは相手に届かなくてもエラーメッセージを表示しなかったり、デッドメールとして送り主に帰ってこない場合があるのでその場で確認することができません。受取人や受信、送信携帯メールプロバイダにお問い合わせ下さい
  1. 【質問】CGIを携帯からアクセスしてみましたが「サイズオーバーの為表示できません」とエラーメッセージが出ました。携帯には対応してないんでしょうか?
    当サイトのCGIには携帯に対応してあるCGIとそうでないCGIがあります。そうでないCGIでもそのまま携帯で表示される場合もあります。携帯モードがあるCGIであれば携帯ブラウザからは携帯モードでアクセスしてください。携帯モードに対応してあるかどうかは各種CGIの解説ページをご参照ください。
  1. 【質問】ダウンロードするCGIファイルはひとつだけですか?
    基本的に当サイトのCGIは簡単に設置できるようにひとつのファイルだけで動くようになっています。古いCGI等では2つや3つのファイル必要なのもありますので解説ページよりご確認ください。
  1. 【質問】ファイルをアップロードすると「アップ後のファイル名は半角英数で」というエラーメッセージが出てアップロードできません。ファイル名は確かに半角英数なんですが何故ですか?
    PerlのバージョンなのかPerlのPackage File::Basenameのバージョンの問題なのかサーバーのOSの問題なのかサーバーソフトの問題なのかはっきりしたことはわかっていませんがある環境下ではファイル名をフルパスから抽出できない場合があります。それによってファイル名に「/」や「\」が含まれこのエラーが出ます。この問題はスクリプトを修正することで回避できますのでサポート掲示板にてその旨をお知らせください。該当するスクリプトを修正します。
  1. 【質問】CGIを実行しzipファイルをダウンロードしようとすると403エラーになります。何故ですか?
    サーバーによってCGIの実行ディレクトリ内のファイルはダウンロードできない設定になっている場合があります。ダウンロードするファイルが実行ディレクトリ以外に置かれる(作成される)ようCGIの管理画面から設定してください。
  1. 【質問】セキュリティイメージを使うCGIを実行したら、Error loading ttf font for GD: Could not find/open font at .../site/lib/GD/SecurityImage/AC.pm line 70のようなエラーメッセージが出ました。どうしたらいいんでしょうか?
    セキュリティイメージを作成するのに使用されるTrue Type Fontの設定が正しく行われていません。True Type Fontをアップロードし、そのCGIの管理用セットアップ画面に入り、「セキュリティイメージ」の「TTFフォントファイル」の項目にそのファイルを指定するよう設定してください。
  1. サポート掲示板はこちらです。