CGIやSSIスクリプトは/cgi-bin/でのみ動作する
ホームページディレクトリは/html/内であることは既にご存知だと思います。
CGIやSSIなどの実行スクリプトは、/cgi-bin/の中でないと動作しません。
また、/cgi-bin/直下でしか実行できないので、
その下にサブディレクトリを作成してその中にスクリプトを入れても実行しません。
データ等はサブディレクトリ内でも構いませんが、実行されるファイルは必ず/cgi-bin/直下に設置します。
なお、SSIを使用するHTMLファイルの拡張子は .shtml にします。
.htaccessを設定すれば .html でも動作するようになるようです。
CGIの呼び出し方法が特殊である
<a href="/cgi-bin/user/メールアカウント名/CGIプログラム名">CGI名</a>
というようにURLが異なりますので注意が必要です。<FORM>のアクション先も同様です。
SSIで#execは使えない
SSI(アクセスカウンタやアクセス解析や2ショットチャットの空室表示など)は直接実行できません。
CGIとして実行した結果を読み込むという形になります。
ここで注意することは、CGIとして動作させるために、通常SSIでは不要なMIME出力が必要になります。
CGIスクリプトでよく見掛ける、データを送信する前に必ず付けるヘッダ送信です。
print "Content-type: text/html\n\n";
この1文をSSIスクリプトの一番最初のprint文よりも前に入れます。
スクリプトに手を加えて設置できたら、CGIの呼び出しと同様に特別な方法でSSIを書きます。
<!--#include virtual="/cgi-bin/user/メールアカウント名/CGIプログラム名"-->
まとめると、アクセスカウンタなどは、上記の1文を入れたスクリプトを
/cgi-bin/内にそのまま構成して設置して、HTMLの方に所定の記述で書くということです。
データファイルの場所はどこでもいいが
CGIやSSIスクリプトの設定に従って設定するわけですが、
差し支えなければ/cgi-bin/以下にデータファイルを用意すれば、面倒な設定が必要ありません。
もし、/html/内にデータファイルを置く場合は、スクリプト内のデータファイルを示すパスを、
"$ENV{'HOME'}/html/...." というように設定する必要があります。
●簡易BBSv?.??tシリーズ(画像送信機能付き)を設置するには、次のように構成&設定する必要があります。
|-- /cgi-bin/
| |
| |-- jcode.pl (644)
| |-- cgi-lib217.pl (644)
| |-- minibbs.cgi (755)
| |-- minibbs_dat.cgi (666)
| |-- minibbs_sus.cgi (666)
|
|-- /html/
|
|-- /bbs_images/ (777)
$tmp = "$ENV{'HOME'}/html/bbs_images/"; # 内部パスで
$tmp_url = "/あなたのユーザ名/bbs_images/"; # URLで
パスワードでアクセス制限の場合
ホスト名による制限はできるかどうかは不明です。
パスワードによるアクセス制限は可能です。
ただし、このサーバでは絶対パスが公開されていません。
従って、アクセス制限設定ファイル .htaccess に、パスワードファイルを絶対パスで設定することができません。
このサーバの場合はUNIXでよく用いられる方法でファイルを指定する記述が、
この設定ファイルに適用できます。~で指定する場所がユーザのルートを示すものです。
書き方を説明する前に、パスワードファイル(例えばHTPWDならuser.pwdのこと)は必ず一番上のディレクトイリに設置してください。
cgi-bin/
html/
user.pwd
cgi-bin内だと認識しませんし、/html/以下だと見られてしまう(パスワードは暗号化されているが)可能性があるからです。
AuthUserFile ~メールアカウント名/パスワードファイル名
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic
<limit post get>
require valid-user
</limit>
なお、パスワードファイルにDBM(例えば電子私書箱2で使用)が扱えるかどうかは不明です。
sendmailを使う方法
sendmailに対してSMTPで送信するPerlサンプルssendmail(simple sendmail)が用意されているので、
これを使うように改造しなければなりません。
-
Hi−Hoの場合は構成が別れているので、初期設定の仕方が難しいです。
/html/がホームページディレクトリですので、
$basurlをたとえ正しく設定しても@TARGETのフォルダ名が付いてしまうので厄介です。
そこでちょっと考え方を変えてみます。ホームページディレクトリの上まで$baseを持ってきてしまうのです。
#このスクリプト(jsearch.cgi)から見た検索対象の最上位域までのパス 最後に/を忘れずに
$base = '../html/';
#ホームページディレクトリ(最上位URL) 最後に/を忘れずに http://から書いても可
$baseurl = '/ユーザ名/';
#$baseで設定した位置から見た検索対象パス この書式でいくつでも設定可能
@TARGET = ('*.html','ディレクトリ名/*.html'); #←これは例