プロバイダには他にもCGIや.htaccess、掲示板用ファイルを置く場所を確認して下さい。プロバイダによっては特定の場所が指定されていて、あなたの借りているディレクトリのどこにでもCGIが置けるというわけではないかもしれません。
プロバイダから答えをもらったところで、bbs.cgiを開いて下さい。bbs.cgiは普通のテキスト文書ですが、文字コードがEUCになっていますので普通にテキストエディタやワープロで開くと文字化けしているかも知れませんが、文字コード変換機能を持ったエディタなら問題なく開くことができます。そして必要ならプロバイダの指示に従って一行目のPerlのパス(プロバイダがPerlを置いているディレクトリ)を指定し直して下さい。
| #!/usr/local/bin/perl |
もしもあなたのプロバイダがUNIXではなくウィンドウズ系のサーバを用いている場合、この最初の行は無くても良いはずです。拡張子".cgi"がかわりをつとめます。O/S9やそれ以前のマックのサーバ(少数ですが)もパスは必要ないと思います。CGIスクリプトとして保存すれば良いのです。ただし最近のマックのO/SはUNIXです。
サーバに置いてあるのがJPerlではなくPerlの場合は
| ############
# 基本設定 # ############ #require 'jcode.pl'; #$ccode = "euc"; |
| ############
# 基本設定 # ############ require 'jcode.pl'; $ccode = "euc"; |
| #!/usr/bin/perl -b |
$ccode = "euc";はこのスクリプト内部で文字処理をする時EUCを使うことを宣言しています。$ccodeの値としては他にjisやsjisも可能ですが、Perlとの相性の点で文字コードはEUCが最善です。もしも文字コードにシフトJISを使いたい場合は
| ############
# 基本設定 # ############ require 'jcode.pl'; $ccode = "euc"; : : ### 掲示板型紙 ### $head = <<"BOARD_HEAD"; <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=EUC"> |
| ############
# 基本設定 # ############ require 'jcode.pl'; $ccode = "sjis"; : : ### 掲示板型紙 ### $head = <<"BOARD_HEAD"; <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS"> |
その他の基本設定として
| ############
# 基本設定 # ############ : : $boardurl = "http://あなたのウェブサイト/bbs.html"; #$basedir = "/掲示板のあるディレクトリ/"; |
CGIスクリプトは専用のディレクトリ(たぶん/cgi-bin/という名前のディレクトリ)を準備して(あるいはプロバイダによってはあらかじめ準備されていて)、そこに全部入れることになっているかも知れません。あるいはどのディレクトリでもCGIが動くようになっているかも知れません。前者の場合/cgi-bin/ディレクトリの中に掲示板を作成しても良いかどうか確認して下さい。もしも掲示板を含めて全てのファイルを一つのディレクトリ内に置くことができるなら#$basedirのことは無視して結構です。
しかし掲示板とCGIのスクリプトを同じディレクトリに入れておくことができない場合#$basedirの頭の#を削除して、その値の/掲示板のあるディレクトリ/を掲示板を設置するディレクトリのパス(あなたの掲示板がサーバのハードディスクのどのディレクトリに入ることになるのかプロバイダに教えて貰って下さい)と入れ替えます。ディレクトリのパスはCGIのあるディレクトリから見た掲示板のディレクトリ(相対パス)でもサーバの最上位のディレクトリから見た掲示板のディレクトリ(絶対パス)でも良いです。
さらに
| ############
# 基本設定 # ############ : : $pswd = "password"; |
ファイルアップロードの前に
以上で必要最小限の変更は終了しました。後は好みの問題です。とりあえずファイルを保存して下さい。マック、ウィンドウズ、UNIXはそれぞれ異なる改行コードを用いています。あなたのサーバが正しく改行位置を理解できるように、改行コードをかえてやる必要があります。bbs.cgi(必要なら.htaccessやjcode.plも)をアップロードする前にテキストエディタなどを用いて改行コードの変換が出来るはずです。改行コードについては何も考えずにファイルをテキスト(またはASCII)ファイルとしてアップロードする方が簡単かも知れません。サーバが古いマックの場合を除いて、実際ファイルは全て単なるテキストファイルなんですから、きちんとテキストファイルと指定してアップロードすれば改行コードの問題は自動的に解決されます。
漢字変換機能のついたFTPを使用するなら$ccodeや掲示板型紙内での文字コードの指定とbbs.cgiファイルをアップロードする時の文字コードの指定が統一されるようにして下さい。
.htaccessは既にあなたのディレクトリに存在するかもしれません。その場合.htaccessには少なくも
| Options ExecCGI
AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ |
一部のサーバはcgiの前に点があると問題があるようです。その場合は点なしのAddType application/x-httpd-cgi cgiとしましょう。
あなたのホームページにまだ.htaccessがなく、しかもCGIを動かすには.htaccessが必要である場合、付属のhtaccessをアップロードして下さい。ウィンドウズ使用者の場合はファイル名の先頭にピリオドが置かれた.htaccessというファイル名をパソコン上に持つことは出来ないと思います。それで付属のhtaccessには点がついていません。このままアップロードしてサーバ上でファイル名を変更しましょう。FTPにファイル名変更の機能があるはずです。
また、ピリオドではじまるファイル名、つまり.htaccessを表示しないサーバも多いので.htaccessがサーバ上にあるはずなのにFTPで接続してみても見えない、ということもあります。その場合、「あるはず」なら、あるはずということで、先に進みましょう。その上でどうもうまく行かないということならプロバイダに問い合わせて下さい。
サーバによっては.htaccessは必要ないかもしれません。.htaccessは特定のプログラムを使用しているUNIXサーバに必要なものだからです。プロバイダが必要ありませんと回答した場合は安心して.htaccessのことは忘れてしまいましょう。ウィンドウズや昔のマックはそれぞれ違ったやり方でファイルを取り扱います。
ファイルのパーミッション
あなたの場合すでにホームページを作成した経験はあるはずですから、ファイルのアップロードの仕方は御存知のはずです。bbs.cgiをCGI用のディレクトリに(.htaccessやjcode.plも必要ならそれらも同じディレクトリに)アップロードします。サーバがJPerlを使っている場合や既にサーバにjcode.plがある場合はjcode.plのアップロードは必要ありません。その上でCGIの場合パーミッションというものを設定しなければなりません。これも普通FTPで出来るはずです。
bbs.cgiのパーミッションは755(もしくは-rwxr-xr-x)に設定してください。これはオーナー、つまりあなたにはこのファイルの読み、書き、実行の権限が与えられていて、他の人には読みと実行の権限だけがあるということです。掲示板を設置するディレクトリのパーミッションは777(もしくはdrwxrwkrwx)にして下さい。.htaccessとjcode.plは644(もしくは-rw-r--r--)です。FTPを使ってのパーミッション設定が出来ない場合はプロバイダに問い合わせて下さい。telnetを使ってパーミッション設定をする必要があるかも知れませんし、パーミッションは外部からは設定出来ずプロバイダに依頼して設定してもらうようになっているかも知れません。
パーミッションの数字は3桁ではなく4桁で表示されているかも知れません。この場合755というのは0755と読み替えて下さい
上記の数字より小さな数でも問題がないかどうかは調べてみる価値があります。bbs.cgiのパーミッションを755のかわりに705にすることが出来るなら、この方がより安全です。ただし705でCGIが動作するどうかはプロバイダによります。プロバイダに問い合わせるなり御自分で試行錯誤するなりして下さい。
初期化とテスト
パーミッション設定後はブラウザを立ち上げインターネット経由であなたのCGIを呼び出して下さい。CGIのURLに続けて?admin=initと入力します。http://あなたのサイトのURL/bbs.cgi?admin=initです。掲示板が作成されるはずです。この場合ブラウザに「ありがとう」と表示されてから掲示板がブラウザに現れます。
もし「ありがとう」の表示の代わりに「ファイルが見つかりません」と表示されたらURL入力の時の綴りの間違いかもっと遡ってFTPでファイルをアップロードした時に失敗したのでしょう。bbs.cgiをアップロードしたディレクトリに間違いはありませんか?
もしかしたら掲示板は作成されず、CGIのソースコードがそのまま表示されてしまうかも知れません。CGIのパーミッションは正しく755になっていますか?.htaccessの内容に間違いがないかどうかも確認して下さい。
"internal server error"という表示が出たらPerlのパスが正しいかどうか確かめて下さい。PerlのパスはCGIスクリプトの一番先頭に書かれなければなりません。#!より前にはスペースも何も置いてはいけません。またスクリプトの中の一見どうでも良く見える#とか{とか}とか(とか)とか'とか"とか;とかいった記号を間違って削除してしまっても"internal server error"になります。$basdirを有効にしている場合はその値が正しいかどうか確認しましょう(特に"no such directory"や"permission denied"と言ったエラー表示が出た時は)。もちろんスクリプトやディレクトリのパーミッションの設定も再確認して下さい。
$boardurlの値が間違っている場合は掲示板は作成されますし、「ありがとう」の表示もありますが、できた掲示板がブラウザに現れません。(でもFTPで覗くと存在が確認できるはずです。)$boardurlの値だけ訂正してCGIをアップロードし直します。
最後に掲示板が出来たら何か書込んで送信ボタンを押してみましょう。文字化けする場合は文字コードが統一されているかどうか確認します。$ccodeの値と掲示板の型紙で指定する文字コードとCGIを保存する時(アップロードする時を含めて)の文字コードは一致しなければなりません。
DoubleMessageBoardの使用にあたっては最新のバージョンを使用し、スクリプトを改造したい場合でも、先ず必要最小限の変更(Perlのパス等プロバイダの指示に従うもの)だけのDoubleMessageBoardがあなたのサーバで動くことを確認してからにして下さい。