3-1 一般的なエラーの対処法
改造していないのにCGIを設置しただけでエラーが出た場合の対処方法です。
たった5点を押えるだけで失敗致しません。
(設置前に予め使用するFTPソフトの設定を済ませていると、ほとんど失敗せずに設置出来ます)。
3-1-1 perlのパスを間違えている
スクリプトの冒頭にある「#!/usr/local/bin/perl」という宣言を自分のサーバーの環境に合わせて設定していないとエラーが出ます。 (うっかり#の前に半角の空白を入れていたりしていると、それだけでエラーが出ます)。 ほとんどのサーバーではダウンロードしたままの設定で動きますが、まれに「#!/usr/bin/perl」でないと駄目なサーバーもあります。 (必ずサーバーの指定している方法に合わせて下さい)
ちなみに、さくらのレンタルサーバーを借りておられる方の場合、上記のパスでエラーが出た際に「#!/usr/bin/perl5」 にすると解決する場合があります。
3-1-2 相対パスを間違えている
上記の構造のCGIを設置した場合、「bbs.cgi」 から見た 「jcode.pl」 の相対パスは 「jcode.pl」 か 「./jcode.pl」 になります。なのでこれを間違えて一つ上のフォルダの位置を意味する「../jcode.pl」などとしてしまうとエラーが出ます。
※ CGIと同じディレクトリに画像を置けないサーバー(Nifty、WAKUWAKU、hi-ho等)の場合、相対パスではなくて絶対パスを利用する事もあるかと思いますが、パスの原理は同じなのでくれぐれも気をつけて指定して下さい。
[ 関連事項 : HP-TIPS > CGI > 基礎知識 > 相対パスと絶対パス ]
3-1-3 転送モードを間違えている
FTPソフトを使用する際、アスキーモード(テキストモード)とバイナリモード(Rawモード)という二つの転送方法があるのですが、これを間違えるとエラーが出ます。
- アスキーモード
- 「.html」 、「.htm」 、「.txt」 、「.ini」 、「.cgi」 、「.pl」 、「.log」 、「.dat」 、「.pm」 、「.php」 、 等の拡張子の物
- バイナリモード
- 主に画像 (「.gif」 、「.jpg」 、「.png」 、「.bmp」) や音声 (「.midi」 、「.wav」)拡張子の物です
-
使用しているHP作成ソフトによっては、
画像やHTMLファイルは 自動でアップロードして下さいますが、CGIの設定のみユーザーが 手動で設定しなければいけない物があります。(フリーのソフトをご使用の方は特にご注意して下さい)
3-1-4 パーミッションの設定をしていない
ほとんどのCGIはサーバーにアップするだけでは動きません。必ずパーミッション(アクセス権の許可)の設定をして下さい。 (パーミッションを適切に設定しておけば、第三者にファイルを消されたり、勝手にログファイルの中身を覗かれたり、 また書き換えられたりする事を防げます)
-
パーミッションの数値は少なければ少ない程、
セキュリティが高いです。もしご使用になっているサーバーで動くのであれば 「700」 や 「600」 をお勧め致します。
一つのファイルやディレクトリ(HTMLでいうフォルダと同じ意味です)に対して、
- 『オーナー : 所有しているユーザー』、
- 『グループ : オーナーの属しているグループ』、
- 『その他第三者』という三種類のユーザーごとに
読む・書く・実行・権限なし という四種類の設定をする事が出来ます。
- 数字は全部足すと7になり、755(rwxr-xr-x)だと
- オーナー:7 (読み取り4・書き込み2・実行1の全てを許可する)
- グループ:5 (読み取り4・実行1を許可する)
- 第三者 :5 (読み取り4・実行1を許可する) になり、
- 700(rwx------)だと
- オーナー:7 (読み取り4・書き込み2・実行1の全てを許可する)
- グループ:0 (権限なし)
- 第三者 :0 (権限なし) になります。
3-1-5 アップロードする場所を間違えている
- サーバーによってはCGIを設置する場所が 決まっている場合があります。(例:「cgi-bin」内に全て収める等)。必ずサーバー側の約束に従って下さい。
- 「Nifty」ではCGIを設置する場所に「画像ファイル」は置けません。
- また、「hi-ho」では「cgi-bin」直下で無いとCGIは動きません。
(つまり「cgi-bin」フォルダの中に管理しやすいように「bbs」や「diary」というフォルダを作成しようと思っても出来ないという事です) - 画像が表示出来ない等のエラーは、ほとんどが違う場所に画像をアップロードしている場合が多いです。(相対パスの項目で使用した例でいうと[bbs]フォルダの中の[img]の中に画像を入れる 設定にしているのに、間違えてpublic_htmlのすぐ下である index.html や top.html と同じ場所に画像を転送してしまっている等)。いずれもよくあるミスなので気をつけてアップロードして下さい。
サイトを運営される際は、くれぐれも契約した際に送信される設定事項をよくお読みの上でCGI等を設置して下さい。
3-2 改造をしてエラーが出る場合
- 半角小文字の英数字で記述する所を全角文字で記述しておりませんか?
- 間違えてダブルクォート(")やシングルクォート(')、セミコロン(;)、中括弧({ }) 等を消しておりませんか?これらの記号は消すとエラーが起きます。くれぐれもご注意して改造して下さい。
- パーミッションの設定(755・666)や、アップロードするモード(バイナリモード・アスキーモード)を間違えておりませんか?
- 改造講座に書かれているCGIのヴァージョンが上がった際に、記載されている項目(「$eml」や「$comment」等)の記述が「$e-mail」や「$comt」等に変わる事があるかも知れません。その場合は改造方法を参考に似たような記述を探して変更して下さい。
※ ただし、大幅に仕様が変更になった場合は各講座で書かれている内容では改造出来ないケースも出て来ます。全ての管理人さんがリアルタイムにアップデートを知る訳では無いので、どのヴァージョンを元に記載されている改造方法なのか等も合わせてチェックする事をお勧め致します。
3-3 よくあるエラー内容
- 403 Forbidden
- パーミッションの設定が違います
→ FTPソフトの設定が間違っていないかよく確かめて下さい。
[ 関連事項 : CGIの基礎知識:FTP 、パーミッションの設定 ]
- パーミッションの設定が違います
- 404 Not Found
- アップロードした場所が違います
- またはCGIの呼び出し方が違います(存在しないファイルやディレクトリにアクセスしてしまった)。
[ 関連事項 : 相対パスのチェックや、アップロードした場所の確認をして下さい ]
- 500 Internal Server Error
- perlのパスが違います
→ 契約しているプロバイダー(もしくはレンタルサーバー)の規約をよく確認してみて下さい。
[ 関連事項 : perlの宣言文 ] - CGIの修正や改造等の記述に間違いがあります(全角文字で入力していたり、「,」「;」「"」等を消してしまったり追加し忘れていたり)
→ 改造は少しずつする事が肝要です。(何処で間違えたのかすぐ判り元に戻しやすいので)
[ 関連事項 : CGIの改造でエラーが出たら ]
- perlのパスが違います