設置方法Q&A1−ショッピングカートCGI設置の手順 |
【1】サーバの準備(以下の点をチェック)
使いやすいサーバを選べば安く簡単に設置できる。
- LinuxサーバかそれともWindowsサーバか?(Linuxサーバが使いやすい)
- CGIが使えるか?
- cgi-bin下でのみCGIが動くか?(設置が難しい。)どのフォルダでもCGIが動くサーバがいい!
- sendmailが使えるか?
- symlink関数が使えるか?
- SSLは使えるか?値段はいくらか?
【2】FTPソフトの準備
【3】テキストエディタの準備
【4】perlのパスの設定
- perlのパス(当社のCGIの場合は、/usr/bin/perl)
- sendmailのパスも設定する。
- いずれもサーバにより異なるので確認が必要。
【5】パーミッションの設定
- FFFTPをあらかじめ設定しておくと便利。
- サーバにより異なることがある。また、安全性も考慮しなければならない。
【6】設定ファイル(set.pl)の設定
- まず、初期状態で動作を確認する。
- 一度に多くの設定をせず、少しずつ設定-確認を繰り返す。そうすれば、エラーの原因がわかりやすい。
【7】ローカルでテストする方法
自分で機能変更する(プログラムをいじる)場合は、テスト環境を揃えることが必要。
ホームページ作成ソフトを活用すれば、デザインの製作を効率的に行なえ、CGIに組み込む助けになる。
- ホームページビルダーを使用する時は、標準モードを使用する。
|
設置方法Q&A2−ファイル(個人情報)を保護する方法 |
ファイルを保護することは重要なことです。ファイルを外部から読み取られないように以下のことを必ず行ってください。
ファイルの保護はいくつかの方法で行うことができます。
- パーミッションの設定
- .htaccessによるファイルの保護
- BASIC認証によるアクセス制限
- その他
【1】パーミッションによるファイルの保護
パーミッションは大体下記の表のように設定します。ただし、サーバの仕様により大きく異なる場合があるので確認が必要です。
それで、パーミッションによっては必ずしもファイルを保護することができないことがあります。その場合は、.htaccessを用いてください。
●CGIスクリプトと、それを格納するフォルダのパーミッション
ファイル/フォルダ |
パーミッション |
スクリプトファイル |
705 or 755 |
スクリプトファイルのフォルダ |
705 or 755 |
●CGIスクリプトが読書きするデータファイルと、それを格納するフォルダのパーミッション
ファイル/フォルダ |
パーミッション |
読み出し専用ファイル |
604 or 644 |
データファイル |
606 or 666 |
データファイルのフォルダ |
707 or 777 |
【注】suEXECサーバ 又はCGIWrapサーバ の場合は、CGI(701 or 700)、データファイル(600)、フォルダ(701 or
700) が一般的です。
【2】.htaccessによるファイルの保護
以下のように記述した.htaccessファイルをファイル保護が必要なフォルダに入れると、その拡張子のファイルが見えなくなります。この場合、拡張子pl、ini、csvのファイルが読めなくなります。
<Files ~ "\.pl$">
deny from all
</Files>
<Files ~ "\.ini$">
deny from all
</Files>
<Files ~ "\.csv$">
deny from all
</Files>
【3】BASIC認証によるアクセス制限
特定のフォルダにパスワードを使ってアクセスできるようにするものです。下記の2つのファイルをそのフィルダに入れるだけです。詳しくは、こちらのページを参照してください。⇒.htaccessによるパスワード認証
ファイル名:.htaccess
AuthType Basic
AuthName "ID・パスワードを入力してください"
AuthUserFile /home/*******/.htpasswd
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>
(注)****の部分はサーバ内絶対パスです。次のプログラムで調べられます。⇒Kent-Web
ファイル名:.htpasswd
ID:暗号化されたパスワード
【4】その他
ファイルを保護する他の方法には次のような方法があります。
1.データファイルの拡張子をdata.cgiのようにすると、外部から見ることができなくなります。
2.index.htm(index.html)をフィルダ内におくとフォルダ内のファイルを一覧できなくなります。
《注意》販売管理でCSVダウンロード機能を活用している場合
csvファイルがダウンロードできるように、.htaccessファイルから下記の部分を削除する必要があります。
<Files ~ "\.csv$">
deny from
all
</Files>
その代わりに、他にCSVファイルを使っているなら、該当のフォルダ内に次のように記述した.htaccessファイルをUPして入れてください。
<Files ~ "\.csv$">
deny from
all
</Files>
この場合、csvファイルを外部から読めないように対策が必要になります。対策の方法を幾つか挙げてみたいと思います。
〔1〕ファイル名を難しい名前に変える。
1.CSVデータが入っているフォルダにindex.htmlファイルを入れる(すでに入っていますので削除しないでください)。
2.システム設定の販売管理で注文ログのCSVファイル(顧客と販売)のファイル名を難しい名前に変える。(システム設定の【18】販売管理の設定 の 2番目と3番目)
また、注文ログのCSVファイルはダウンロード後は使用しませんので削除することができます。(または、ダミーのデータを作成すれば前のデータは上書きされます。)
〔2〕CSVデータが入っているフォルダにBASIC認証によるアクセス制限をかける
上記の 【3】BASIC認証によるアクセス制限 で説明されている方法で行なってください。これによりパスワードを知っている者だけがアクセスできるようになります。
|
設置方法Q&A3−CGI-BIN下でのみCGIが動くサーバの場合の設置の仕方 |
CGI-BIN下でのみCGIが動くサーバの場合、画像ファイルを別のフォルダに置かなければならないことがあります。その場合、読み込み用のパスの指定と書き込み用のパスの指定の仕方が異なります。
具体的には、以下の例を見て下さい。(サーバによって異なるので、確認することが大切です)
【サーバのフォルダ構成例】
web
|___ index.thm
|___ images
|____photo.gif
cgi-bin
|___ shop.cgi
|
【書き込み用】サーバ内の絶対パス(サーバ側にたずねる必要がある)で画像を指定する
/images/photo.gif
したがって、フォルダは
$dir ='/images';
【読み込み用】フルパス(http://〜)で画像を指定する
http://・・・・/images/photo.gif
したがって、フォルダは
$dir ='http://・・・・/images';
|
※このようなサーバの解説の例 |
設置方法Q&A4−SSLサーバへの設置方法 |
SSLの設定はサーバにより異なります。URLを変えるだけでよい場合とSSLのための領域にUPする必要があるものなどがあります。以下、SGX-SPの場合を例にして説明します。
●URLを変えるだけでよい場合
この場合は、SSLをかけたいスクリプトまたは処理に対して、https://〜で呼び出せばよいのです。その際、データや画像の呼び出しもSSLになるように注意してください(相対パスで設定しておけば自動的にそうなります)。
shop.cgiの場合は以下のように設定することにより、注文処理以降でSSLになるようになっています。
shop.cgiのパス:http://〜
shop.cgiのパス(SSL用):https://〜
●SSL専用の領域がある場合
この場合、そっくりSSL領域に置くのが一番楽ですね。
そうしたくない場合は少し難しくなります(事実上不可能)。データや画像が共有できないので、data.cgi、shop_onfo.cgiやタイトル画像などをそれぞれに2重に持つ必要があります。shop.cgiもそれぞれの領域にUPし、パスを上記のように設定することによりSSLとそうでない領域を行き来することができます。そのようにすれば不可能ではありませんが、お勧めではありません。サーバを変えることをお勧めいたします。
★cgi-bin下でのみCGIが動くサーバでSSLを使用すると、画像が表示されないなどの避けられないトラブルが発生することがあります。
|
設置方法Q&A5−スクリプト中の「@」など記述の仕方 |
スクリプト中で、「@」は\@と記述しなければなりません。そのほかに、全角ブランクや「表示」といった文字も「表\示」と記述しないとエラーになる場合があります。詳しい説明は以下のページを参考にされてください。
http://www.kent-web.com/pubc/jcode/
http://tohoho-web.com/wwwperl4.htm#perl5att
|
設置方法Q&A6−文字化け対策 |
文字化けしてしまうときにはスクリプト中から次の行を削除してみて見てください。
(e_shop.cgiの約3000行目)
print "<META content=\"text/html; charset=Shift_JIS\"
http-equiv=Content-Type>\n";
詳しくは以下のページを参考にされてください。
http://www.tohoho-web.com/wwwxx005.htm
|
設置方法Q&A8−ファイルが削除できないとき |
サーバ内のファイルやディレクトリが削除出来ないときがあります。特に、CGIスクリプトが生成したファイルは削除されない場合があります。そのような時はサーバの管理者に頼んで削除してもらうことができます。
簡単なCGIを使って削除する方法もあるようですが。
|
設置方法Q&A9−sendmail |
sendmailのパスはサーバによって異なります。サーバ側に尋ねることができます。
代表的のものは次のようなものです。
$sendmail = '/usr/sbin/sendmail';
$sendmail = '/usr/lib/sendmail';
$sendmail = '/usr/local/bin/sendmail';
|
設置方法Q&A10−管理画面の呼び出し方法 |
管理画面を呼び出し、パスワードを入力すると、パスワードがアドレスバーに表示される場合があります。これはパスワードをCGIで受け渡ししているためです。それを表示したくないときはフレームを使うことをお勧めいたします。つまり、以下のようなadmin.htmlを準備します。
<html>
<head> <meta name="robots" content="noindex,nofollow">
<title></title></head>
<FRAMESET frameborder="0" border="0" framespacing="0">
<frame src="./shop.cgi?mode=adm1" marginwidth="0"
marginheight="0" scrolling="AUTO" frameborder=0>
</FRAMESET>
</html>
このadmin.htmlを呼び出して管理画面に入ると、CGIのURLは表示されなくなります。
|