CGI-Search | カスタマイズノートトップ
キーワード検索  

RSS1.0/RDF
AmigoDatabase基本トラブルFAQ
 「ビジー状態」というのは「ファイルがロック中」であるということになります。ファイルロックというのは、データの登録、編集、削除の際に他の人がそのプロセスに割って入ってこれないように保存ファイルに対しそのプロセスを制限するものです。
 AmigoDatabaseは、ロックファイル中のAmigoDatabaseエラーは自動的にそのファイルロック状態を解除しますが、AmigoDatabase外のサーバーエラーなどはファイルロックが解除されずそのままロック中としてロック状態が維持されます。この時にAmigoDatabaseにアクセスした際に「只今ビジー状態です。」とAmigoDatabaseエラーとなってしまいます。
 この問題の処理は[db-setup.cgi]でのファイルロック処理選択でも異なりますが、基本的に「lockディレクトリ」の状態をデフォルトへ戻せば問題は解決します。ですので、何ら変更されていないローカルサーバー側の「lockディレクトリ」をサーバー側へFTPアップロードするか、又はlockディレクトリ内に作成されているディレクトリ及びファイルを削除することで問題は解決されます。(デフォルトのファイルは削除されないようご注意下さい)
 AmigoDatabaseは、呼び出されたページに対してリファラー(呼び出し元のページURL)にdb-setup.cgi設定の「設置サイトの最短URL」が含まれてなければ「設置サイト外からの呼び出しです。」とエラーになります。
 デフォルト状態では次のようになっています。
# ■設置サイトの最短URL
@MyUrl=('http://');
 この場合、取得リファラーが「http://」で始まってなければAmigoDatabaseエラーとなります。要するにサイト間でのクリックアクセスは許可されるものの、ダイレクトアクセス(URLを直接入力してアクセス)ではURLが取得できないためAmigoDatabaseエラーとなってしまいます。
どのダイレクトアクセスでも可能とするならば
# ■設置サイトの最短URL
@MyUrl=();
のように設定を全て削除して下さい。
逆に自分のサイトURLからだけしかアクセスを許可しない場合は
# ■設置サイトの最短URL
@MyUrl=('http://あなたのサイトURL');
とすればアクセスを制限できます。複数設定する場合は
# ■設置サイトの最短URL
@MyUrl=('http://あなたのサイトURL','http://別のサイトURL');
のように[,(カンマ)]で区切って指定します。
 テンプレートHTML(lib/template/***.html)を修正した際に特定の文字が文字化けする。
AmigoDatabaseは文字コードに「Shift_JIS」を採用しています。この「Shift_JIS」の場合、テンプレートHTMLに書き込んだ特定の文字では文字化けを起こします。文字化けを起こす文字は次の通りです。
― ソ Ы \ 噂 浬 欺 圭 構 蚕 十 申 曾 箪 貼 能 表 暴 予 禄
兔 喀 媾 彌 拿 杤 歃 濬 畚 秉 綵 臀 觸 軆 鐔 饅 鷭 x x
上記の文字の場合、その文字の後ろに「\」を入れてその文字をエスケープすることによって文字化けを防ぐことが出来ます。
構\ 蚕\ 十\ 申\ 曾\ 箪\
 ライブラリファイルを読み込めない状態です。エラー先の***.cgi内に記述間違いがありますのでその問題を解消して下さい。
 問題を特定できない場合、database.cgiのDieサブルーチンの記述を次のように修正するとエラー時にその問題個所を表示出来ますので参考にして下さい。
#print$msg;exit;}
print$msg.'<br>'.$@;exit;}
なお、問題が解決した場合にはこの記述は元に戻しておきましょう。
print$msg;exit;}
#print$msg.'<br>'.$@;exit;}
このようにしておくと次に問題が出たときにも素早い対処が出来ますね。
db-setup.cgiにて次のようにファイルロックタイプを選択できます。
# ■ロックタイプ(1=flock式/2=標準/3=symlink式/4=mkdir式/5=open式)
$LockType=2;
ですが、そのファイルロックタイプでどの種類が使えるか分からない場合は
http://設置URL/database.cgi?cmd=lt
としてdatabase.cgiを実行すれば、ご利用環境で利用出来るファイルロック種類を確認出来ます。
 全てが利用可能としてどのファイルロック種類を選んだら良いのか迷いますね。実際それぞれには一長一短がありどれが良い悪いとは一口には言えません。次は管理人が利用する順番での判断ですが、あくまでも参考として、最終判断はご自身で決定して頂くことが最良かと存じます。
mkdir > 標準 open > symlink > flock
 ページが真っ白となる場合、そのHTMLページを表示するテンプレートHTML(lib/template以降の***.html)に問題があります。
 テンプレートHTMLは、次のように「print <<"<!---HTML--->";」から「<!---HTML--->」までの部分がHTML記述として利用出来る部分で、始まりと終わりの記述で一対となっています。この対の数に間違いがあるとページが真っ白となってしまいます。最後の「;」がないだけでも間違いとなります。
(プログラム記述部分)
print <<"<!---HTML--->";

(HTML記述部分)

<!---HTML--->
&_Html_Head; (プログラム記述部分)
print <<"<!---HTML--->";

(HTML記述部分)

<!---HTML--->
(プログラム記述部分)
1; (プログラム終了)
ご自身のテンプレートHTMLに間違いがないか再度確認してみて下さい。
 また、データ表示変数に間違いがある場合にもHTMLページが真っ白になります。
$VD[$REC{Data}{HPName}] → $VD[$REC{ *** }{ *** }]
正しいこの記述が
$VD[$REC{Data}{1HPName}] → データ項目名の先頭に数字
$VD[$REC{Data}{HPName}   → 最後の「]」が抜けている
のように記述ミスでもHTMLページが真っ白となりますのでご注意下さい。
考えられる原因は次の2点です。
  • data-edit.htmlでのセレクトやチェックボックス記述の設定ミス
  • 管理者環境設定でのセレクトやチェックボックスの設定ミス
前項目の場合、user-edit.htmlやdata-edit.html内に設置するセレクトやチェックボックスの記述が次のようになっているかご確認下さい。
●セレクトの場合
<select name="sample">
<option value="サンプル1" $Select{sample}{1}>サンプル1</option>
<option value="サンプル2" $Select{sample}{2}>サンプル2</option>
<option value="サンプル3" $Select{sample}{3}>サンプル3</option>
</select>

●チェックボックス(ラジオボタン)の場合
<input type="checkbox" name="test" value="テスト1" $CheckBox{test}{1}>サンプル1
<input type="checkbox" name="test" value="テスト2" $CheckBox{test}{2}>サンプル2
<input type="checkbox" name="test" value="テスト3" $CheckBox{test}{3}>サンプル3
赤字部分の「$Select又は$CheckBox{データ項目名}{番号}」が正しく記述されているかご確認下さい。
後項目の場合、管理者環境設定の次の設定項目が正しく設定されているがご確認下さい。
セレクトメニュー項目[ユ]又は[デ] : sample==サンプル1&サンプル2&サンプル3
チェックボックス項目[ユ]又は[デ] : test==テスト1&テスト2&テスト3
「&」で繋げる順番にご注意下さい。user-edit.htmlやdata-edit.htmlで設定した「番号」と同じ順番になっている必要があります。
登録(編集)ページ内に次のように同じ「データ項目名」のフォームが存在しませんか?
<input type="text" size="30" name="sample" value="$FORM{sample}">
<input type="hidden" name="sample" value="$FORM{sample}">
不要なフォームは削除して下さい。
フォーム部品の記述が次のように正しくなされているかご確認下さい。
<input type="hidden" name="Option_検索条件番号" value="checkbox">
<input type="checkbox" name="S_検索条件番号_Key_データ項目名" value="サンプル1">サンプル1
<input type="checkbox" name="S_検索条件番号_Key_データ項目名" value="サンプル2">サンプル2
<input type="checkbox" name="S_検索条件番号_Key_データ項目名" value="サンプル2">サンプル3
  • 「検索条件番号」は全て同じ番号に指定する必要があります。他のフォーム部品と番号が重複してもいけません。
  • 「データ項目名」はデータとして登録されたデータ名を指定する必要があります。
database.cgiなどのプログラム内に技術的な問題があります。どこに問題があるのか分からない場合「CGI::Carp」モジュールを利用する事でその問題点をサーバーエラー時に表示する事が可能です。
※「CGI::Carp」モジュールが利用出来るかどうかはご利用のサーバー管理者などにご確認下さい。

database.cgiの上部、Perlパスの次行当たりに次のように記述します。
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
このようにすれば、500エラー時に次のように表示されます。
Software error:
〜 エラー文 〜 /database/database.cgi line 100, near ");"
これはdatabase.cgiの100行目近くの「);」に問題があるという意味になります。
これを参考に問題を修正して下さい。