買い物かご 掲示板 メール DB 利用規定 FAQ サポートBBS


次(設定の順番と注意点)
前(---)
最初に知るべきこと
買い物かご設置の基礎
CGIことはじめ
CGI設置ノウハウ
Basic Top
Make CGI

Home



買い物かごスクリプト設置の基礎 --まずはアップロード--

■はじめに・・・

解凍したらたくさんファイルが出てきて、思わずのけぞってしまった・・・そんな声がちらほら・・・^^;、

そりゃ、初心者の方はのけぞるでしょうね・・・^^;
思わずしりごみしてしまうのもわかります。
本当はもっと少ないファイルで実現したいんですけど、私の技術力がそこにまで至っておりません。

そこで、せめてもの罪滅ぼしとして、できるだけ噛み砕いて、買い物かごの設置方法を説明していきます。


■パーミッション

ファイルを解凍したら、そのままアップロードしましょう。アップロードする場所はどこでもかまいません。

(いや・・・契約しているサーバーによっては、アップロードする場所が決まっていることもあります。不安な方は、サーバー業者に聞いて見ましょう。でもたいていは大丈夫!)

ファイルを解凍すると、中に「shopv2_r」などの名前の付いたフォルダが出てきます。これをフォルダごとアップロードします。アップロードするときは、自動選択モードでOK。

全てアップロードしたら、パーミッションを変更します。「設定」ページを見ると、ずらぁぁっと、たくさん出てきますが、それを一つ一つ確認しながら設定してください。基本的には・・・

  1. 755にするのは「shop.cgi」と「admin.cgi」だけ。
  2. 777にするのは「cargo_html」「image」フォルダ以外の全てのフォルダ(Shop System Type1だけは「image」フォルダを777にします)
  3. それぞれのフォルダに入っている「xxx.cgi」は全て666にする。
  4. 後は変更不要。

一部例外はありますが、こんなところです。

さて、このパーミッションですが、どのようにして決めているのでしょうか?
これが理解できれば、どんなにたくさんファイルがあっても、恐れることなくアップロードできます。

■755のファイル---Windowsでいうところの「exe」ファイル

755に指定するファイルは、Windowsでいうところの「exe」ファイルに該当します。Word.exeとか、Excel.exeとか、そのファイルをダブルクリックすると、何らかのソフトが起動するタイプのファイルですね。

「shop.cgi」と「admin.cgi」はいわば、サーバー上の「exe」ファイルです。
ただ、Webサーバーでは見ている人はダブルクリックできませんから、リンクを使ってプログラムを起動させているのです。

さらに、Webサーバーで使われているのは、UNIXとかLinuxと言われるWindows ではないOSです。このOSでは、パーミッションを使って、そのファイルを実行可能 (プログラムとして動作できる) ファイルとするか、しないかを指定しているのです。

ということは、

755にすれば、CGIスクリプトが動くし・・・
755でなければ、ただのテキストファイルで、CGIスクリプトは動きません。

755にしなければ、「Server Error」が出てそれっきりです。

買い物かごで「プログラム」として動かすのは「shop.cgi」と「admin.cgi」の二つだけ。だから、755にするのは、この二つしかないのです。

■666のファイル---みんなが書き込みできるファイル

666は、アクセスしてきた人にデータを書き込ませるためのファイルに指定します。Windowsでは何もしなければ、メモ帳で作ったテキストファイルとか、ワードで作ったファイルを削除したり、書き換えたりできます。もしそれをさせたくなければ「読み取り専用」にしなくてはいけません。

ところが、「UNIX」や「Linux」はその反対です。
何もしなければ読むことしかできないのです。書き込むことも、削除することもできません。
そこで、アクセスしてきた人が書き込みできるようにするためにパーミッションを666にしています。

さらに曲者なのは、管理者と言えども、666にしないとファイルに書き込めないと言うこと。FTPを使ってサーバーにアクセスすれば何でもできますが、Web上からでは666じゃないファイルは読むことしかできません。

買い物かごでは、管理モードで管理者が編集するファイル

-メールデータ(「ad_data」フォルダ内のファイル)
-送料データ(「soryo」フォルダ内のファイル)

さらに、ユーザーが自動作成するファイル

-買い物履歴ファイル(「data」フォルダ内のファイル)

が、666にするファイルです。
買い物履歴ファイルは、スクリプトが勝手に作成して、勝手に666にしています。

Windowsでは、2000やXPProの「アクセス権」がパーミッションに該当します。

■777のフォルダ---みんなが書き込みできるファイルが入っているフォルダ

666のファイルが入っているフォルダは、777にする必要があります。
何もしない場合のフォルダのパーミッションは755または775です。
このままだと、このフォルダに入っているデータに、データの書き込みや保存、変更ができません。

そこで、777に変更します。

そして、「lock」フォルダ
このフォルダには何もアップロードしません。でも777です。どうしてでしょうか?

このフォルダは、「重複処理防止用」に特別に用意されています。
たまに、アクセスカウンタの数値が急に1に戻ってしまった・・・なんてことがあるでしょう。
俗に「カウンターが壊れた」なんていいますが、これを防止するのが「lock」フォルダです。

買い物かごでは、複数の人が「まったく同時に」買い物を始めた場合、買い物履歴ファイルが重複してしまいます。 (アクセスした時間をファイル名にしているので・・・) もちろんタイミングとしてはごくわずかの可能性しかありませんが、0とは言い切れません。そこで、「lock」フォルダで重複処理を防止しています。

具体的には、

.誰か初めて商品を購入したら、スクリプトが「lock」フォルダに「lock.tmp」というファイルを作成。履歴ファイルを作成し、必要なデータを書き終えたら、「lock.tmp」を削除します。

.この処理中に、別の人が初めての商品を購入しようとして、この「lock」フォルダに「lock.tmp」を作成しようとするけど、すでに存在するので作成できない。「lock.tmp」のパーミッションは644なので、上書き不可能です。

このファイルが存在したら1秒待つ。そして再度「lock」フォルダにアクセス。これを5回繰り返します。この間に「lock.tmp」が消えていれば、次の人が商品履歴ファイルを作成できるようになります。もし5秒過ぎてもだめだったら・・・

「混雑しています」エラーを出します。その場合、ユーザーはいったん前のページに戻って再度購入することができますが、このエラーが出ることはめったにありません。

このように使われているので、最初から「lock.tmp」をアップロードしてしまうと、買い物ができなくなってしまいます

■設定不要のファイル---読むだけのファイル

その他のファイルは設定不要。これらのファイルは「読むだけ」ファイル/フォルダだからです。

「cargo_html」に入っているテンプレートファイルは、スクリプトが読み込むことはあっても、スクリプトが書き換えることはありません。見た目は書き換わっているようですが、実際には、「$」ではさまれた記号の場所に、スクリプトが、その時々に応じたデータを書き込んでいるだけです。

「image」フォルダ内のデータも同じです。
ただ、先に述べたように、「Shop System Type1」だけは、画像をアップロードしたり、画像を置き換える必要があるため、パーミッションが777になっています。

jcode.pl cgi-lib.pl set.pl これらのファイルもデータを呼び出すだけなので設定は不要です。

以上の点を頭に入れて、設定メニューページを見てみましょう。


■よくあるトラブル・・

■オープンエラー発生時は・・・

ファイルをアップロードして、動かそうとすると・・・

「オープンエラー」「顧客特定ファイルが開けません」なんてエラーが出てそれっきり・・・
ほかにも「xxテンプレートファイルを開けません」等のエラーが出てそれっきりになることがあります

この手のエラーが出てくる原因は・・・・スクリプトが読み出すファイルが存在しないからです。
ただ、存在しないと言っても、本当に存在しないだけではなく、パスが間違っているから見つけられないこともあります。もしこの手のエラーが出たら・・・

  1. 本当にファイルが存在していないかどうか。
  2. そのファイルの場所(パス)指定が間違っていないかどうか。
  3. ファイルやフォルダのパーミッションの指定が間違っていないか。
  4. set.plのパス設定で「全角アルファベット」を使っていないか。
  5. テンプレートファイルを開けない場合、パスのファイル名と実際のファイル名が異なっていないか。特に、大文字小文字もチェックしてください。また、全角アルファベットは使えません。

    例:
    set.pl:./cargo_html/regist.html
    実際のファイル:./cargo_html/Regist.html

    この場合は、エラーを出してしまいます。
    regist.htmlなんて、全角アルファベットもだめです。

この5つを確認しましょう。

「顧客特定ファイルが開けません」エラーは、クッキーがきちんと作成されていない場合、または、「data」フォルダの購入履歴ファイルを間違って削除してしまった場合に出てきます。

そのほかのエラーでは、set.plで指定するパスをじっくりとチェックしてください。

■サーバーエラー発生時は・・・・

サーバーエラーが発生したときは、以下の点を確認してください。

  1. .CGIスクリプトのパーミッションの設定を755にしているか。
  2. 「Shop System 簡易版」の商品選択フォームに記述する
    <input type="hidden" name="mode" value="xxx">
    の「mode」と「xxx」が正しいか。
  3. 商品選択フォームで全角アルファベットを使っていないか。

この3点をチェックします。

もっと根本的な問題として、スクリプト1行目の
#!/usr/bin/perl

がこれで正しいのか、レンタルサーバーのホームページを見て確認し、異なっていたら書き直してください。

#!/usr/local/bin/perl

に書き換えると、動くこともあります。
もちろん、もともとCGIを許可していないサーバーでは利用できません。

CGIスクリプトを設置する場合、関係するページでの全角アルファベットの使用は控えたほうが無難です。普段から全角アルファベットや全角数字を頻繁に使っていると、いざエラーが出た場合、気づくのが遅れてしまいます。

■画像が表示されない・・・

これも、原因は「オープンエラー発生時」と同様です。簡易版では、ファイル名を商品購入ページで記述し、イメージファイルが保存されているフォルダは「set.pl」で指定します。

また、1台丸貸しサーバーを利用していると、CGIスクリプトを置くフォルダ内にアップロードした画像ファイルを表示できないことがあります。このような時は、パスの設定に注意してください。

この手のサーバーは月間数万円とかの高価な代物なので、当サイトのユーザーの皆さんが使っていることはほとんどないと思いますが・・・

たまに会社のサイトの運営を任されていて、その会社が丸ごとレンタルサーバーや、会社内で運営しているサーバーを使っていることもありますので、思い当たる方は確認してみましょう。

■メールが送信できない・・・

set.plの
# SENDMAILの設定
$sendmail = '/usr/sbin/sendmail';

を確認します。
ここの記述をレンタルサーバーのホームページを見て確認し、異なっていたら書き直してください。
たまに、

# SENDMAILの設定
$sendmail = '/usr/lib/sendmail';

とすると、メールが送信できることもあります。

もっと根本的な問題として、契約しているサーバーやプロバイダで、CGIでsendmailが使えない設定になっていることがあります。このような時は、買い物かごは利用できません。

■メールに関する設定や、送料設定はどこでやるの?

管理モードで設定します。管理モードにアクセスするには。あなたのアップロードした「admin.html」へアクセスし、set.plで設定したパスワードを入力します。

■ IISなんだけど・・・

IISでは動作しないことがあります。外向けページではなく、イントラネットでの利用を考えている場合、イントラネットのユーザー数にもよりますが、「AN HTTPD」の利用をお勧めします。「AN HTTPD」であれば問題なく動作します。


Web寺子屋 OGIPOGI E-mail:info@web-terakoya.net
Copyright© 2000-2001 OGIPOGI All Rights Reserved.