- セキュリティ強化のため、public_html ディレクトリに cgi プログラムを設置することができないサーバーがあります。この場合、データ保存に問題は発生しませんが、画像を含めたバイナリファイルの表示(ダウンロード)時に、バイナリへのパスが合わないことがあります。例えば次のようなディレクトリ構造にしなければ
cgiプログラムが動作しない場合を想定します。
| ディレクトリ構成例 |
パーミッション |
備考 |
| / |
|
|
| |- public_html/ |
|
|
| | |-- img/ |
|
|
| | |-- sample/ |
[777] |
|
| | | |-- bin/ |
[777] |
バイナリ格納 |
| | | | |-- upfile.jpg |
|
バイナリファイル |
| | |-- index.html |
|
|
| | |
|
|
| |- cgi-bin/ |
|
|
| | |-- cgi-lib.pl |
[644] |
|
| | |-- herodb.cgi |
[755] |
本体 |
| | |-- jcode.pl |
[644] |
|
| | |-- sample/ |
[777] |
|
| | | |-- lock/ |
[777] |
|
| | | |-- config.pl |
[644] |
表示設定 |
| | | |-- rec.dat |
[666] |
テーブルデータ |
| | | |-- table.def |
[644] |
テーブル定義 |
|
(パーミッション設定 : ○○○.dat=[666] ○○○.cgi=[755]
ディレクトリ=[777] その他=[644])
- データを保存するディレクトリは public_html の中でも cgi-bin の中でもかまいません。このようなディレクトリ構造で問題なのは、ホームページ閲覧者がアクセスできる場所にバイナリファイルを保存してあげなければならないことです。従って、セキュリティ強化のために上記のようなディレクトリ構造である場合は、/cgi-bin/sample/bin/
に upfile.jpg をアップロードしてしまうとホームページ閲覧者がアクセスできなくなる場合が多いと思います。このような場合は、 /public_html/sample/bin/
の中に upfile.jpg としてアップロードするよう仕組まなければなりません。
- この設定は、 cgi本体(HeRO DB の場合は herodb.cgi) の中の次の項目に相当します。
# テーブルのデータ格納ディレクトリ(テーブル・ディレクトリまでのパスです)
# (例)テーブル名に sample を指定した場合に $datpath = "./" とすると、./sample/rec.dat として記録されます。
# テーブル・ディレクトリ(sample)以降は指定しません。
# → パスの最後は / で終わること
$datpath = "./";
# バイナリファイルの格納ディレクトリ(テーブル・ディレクトリまでのパスです)
# (例)テーブル名に sample を指定した場合に $binpath = "./" とすると、./sample/bin/bin000.jpg
として記録されます。
# テーブル・ディレクトリ(sample)以降は指定しません。
# → パスの最後は / で終わること
$binpath = "./";
# バイナリファイルURL(テーブル・ディレクトリまでのパスです)
# (例)テーブル名に sample を指定した場合に
# バイナリが、http://www.***.com/~user/herodb/sample/bin/bin000.jpg の場合は
# $BinUrl = "http://www.***.com/~user/herodb/"; と指定します。
# テーブル・ディレクトリ(sample)以降は指定しません。
# → パスの最後は / で終わること
$BinUrl = "http://www.***.com/~user/herodb/";
- 上記のディレクトリ構造の場合には、次のように指定してください。
$datpath = "./"; ← herodb.cgi から見たデータ保存ディレクトリ(ただし、テーブル名ディレクトリsampleの前まで)
$binpath = "../public_html/"; ← herodb.cgi
から見たバイナリ保存ディレクトリ(ただし、テーブル名ディレクトリsampleの前まで)
$BinUrl = "http://www.***.com/~user/"; ←ホームページ閲覧者がアクセスするバイナリデータまでのパス(ただし、テーブル名ディレクトリsampleの前まで)
- また、上記のディレクトリ構造を持たない、つまり、public_html の中に herodb.cgi
を置いても動作する場合は、次のようになります。
$datpath = "./";
$binpath = "./";
$BinUrl = "http://www.***.com/~user/";
|