CGI-BBS > 電子掲示板 > 簡易BBS > 簡易BBS2000i で画像が出ない。


カレッヂ
カレッヂ


質問者 のび太  投稿日 8/17(金) 02:09:04
簡易BBS2000i バージョン1.02を使用し、掲示板を設置しようとしていますが
3点ほど教えて頂きたい事が有りますので宜しくお願いします。

1.私が使用しているサーバーは、CGIを走らせる時はCGI専用のサーバーにアク
  セスするタイプです。
  (通常)http://www2a/***/***/
  (CGI)http://cgi/www2a/***/***/
そのため、画像をアップロードすると画面が更新され、画像データー(**.gif)が表示さ
れるのですが、リンク先が「http://cgi/www2a/***//minibbs/img1/1.gif」となり「CGI
専用サーバで他の種類のファイルが呼び出されました。」のメッセージが出て、画像が
表示されません。実際、画像が保管されているのURLは「http://www2a/***//minibbs/img1/1.gif」です。このURLを入力すれば、画像は問題
なく表示されます。プログラムの何処をどの様に修正すれば解決するのでしょうか?

2.gifやjpgの画像データーの他に、tif、doc、pdf等画像データーのアップロードは
  可能でしょうか?プログラム上、画像データー以外はアップロード出来なくなって
  いるのでしょうか?もし、制限がかかっているとすれば、どこを修正すれば、可能
  になるのでしょうか?

3.画像の場合、アップロード出来るファイルのサイズが100000バイトになっています
  が1000000バイト(1MB)までのファイルをアップロードしたいと考えています。
  プログラムの何処を修正すれば可能でしょうか?

以上、どなたか宜しくお願いします。
回答者 しあわせのツボ  [削除]  投稿日 8/17(金) 11:35:12
1.
初期設定中
#●画像が記録される場所(PATH) .. ログファイル毎にディレクトリを作成します.
$img_dir{'log1'} = "./img1/";
$img_dir{'log2'} = "./img2/";
を絶対パスで指定します。
$img_dir{'log1'} = "/www2a/***//minibbs/img1/";
のように。

2.
セキュリティ上やらないで下さい。
たとえば、不正なプログラムをアップすればサーバを乗っ取ることも可能です。
そうなった場合、プロバイダからあなたにも損害賠償を請求されることがあります。
技術的には、line 709
unless ($ctype =~ /^image/i) { &error('エラー',"画像ファイル以外は取扱できません."); }
をコメントアウトすれば可能です。
3.
フォームからアップロードできるデータは1回につき128KBまでです。詳しくは以下をご覧下さい。
http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20010803173555.shtml
質問者 のび太  [削除]  投稿日 8/17(金) 14:39:55
早速のご回答有り難うございます。
1.について
アドバイスの通り書き換えてみましたが
>書出エラー
>画像データ 005.gif が記録できませんでした.
のメッセージが出てしまいました。原因は何でしょうか?

2.と3.について
理解しましたので、改造しません。

以上、宜しくお願いします。


質問者 のび太  [削除]  投稿日 8/17(金) 15:01:28
追加質問です。
以下の行の記述は、関係ないのでしょうか?

#●サーバ名、スクリプト名の強制設定
# まず、?log=データ名 を付けずにminibbs.cgiを実行し、そこに表示されるURLと、実際のURLが異なる場合、
# 実際のURLと同じになるように設定してください.
#
# http://<SERVER_NAME><SCRIPT_NAME> という構成となっています.
#
#$ENV{'SERVER_NAME'} = "www.rescue.ne.jp";
#$ENV{'SCRIPT_NAME'} = "/cgi/minibbs2000i/sample/minibbs.cgi";
#
# ↑設定が必要な場合は、この2行の左端の # を削除してください.

以上
回答者 ほっとみるく  [削除]  投稿日 2004/1/20(火) 06:40:14
こんにちは、ほっとみるくです。 先日は、別の掲示板の件で大変お世話になりました。
改めてお礼致します。
さて、お礼かたがたで恐縮なのですが、この度管理人専用の掲示板を設置すべく、こちら
の「簡易BBS2000i」を設置したのですが、前回と全く同様のトラブル(@nifty
でCGIとHTMLの混同が出来ない)に見舞われました。
過去レスを探っていると偶然にも私と同じトラブルに見舞われている方を発見したのですが、
残念な事に解決に至らない状態のままで止まっています。

実のところ私も、こちらのスレッドベースの方と全く同じ状況(途中の画像フォルダーを
フルパスで指定すると「書き出しエラー」が発生してしまう)で止まっています。
ちなみに、フルパスで指定すると、ファイルのオープン自体は正しく行われている事を確認
しましたが、何故か書き出しエラーが発生するのです。
前回の回答を参考にしていろいろと書き直してみましたが、やはりダメでした。

すみませんが、再度お願い出来ますでしょうか? 宜しくお願い致します。
回答者 初心蛙  [削除]  投稿日 2004/1/22(木) 00:16:58
こんばんは、ほっとみるくさん。

おわかりのようにniftyはCGIから画像を呼び出すには、httpから記述しなければなりません。
どうやら一部のプロバイダもそのような感じです。

CGI専用フォルダ、その他専用フォルダ下に「bbs」フォルダをつくりその中にファイルを
入れたと仮定。

90行目
#●画像が記録される場所(PATH) .. ログファイル毎にディレクトリを作成します.
$img_dir{'log1'} = "../../homepage/bbs/img1/";
$img_dir1{'log1'} = "http://homepage3.nifty.com/****/bbs/img1/"; <---追加
$img_dir{'log2'} = "../../homepage/bbs/img2/";
$img_dir1{'log2'} = "http://homepage3.nifty.com/****/bbs/img2/"; <---追加

595行
$image0 = "$img_dir{$cmd{'log'}}$number\.s\.$ext0";
$image0a = "$img_dir1{$cmd{'log'}}$number\.s\.$ext0"; <---追加
$image1 = "$img_dir{$cmd{'log'}}$number\.$ext1";
$image1a = "$img_dir1{$cmd{'log'}}$number\.$ext1"; <---追加

602行 サムネイル表示
if (-e $image0) { print "<img src=\"$image0a\" align=left hspace=10 vspace=10>\n"; }
                  ~~~~~~~~~
609行 画像のリンク先
if (-e $image1) { print "<p><a href=$image1a target=_blank>$number\.$ext1<br>($image1_size bytes)</a>"; }
                  ~~~~~~~~~
これで表示されます!確かめられて下さい。
回答者 ほっとみるく  [削除]  投稿日 2004/1/22(木) 22:05:32
初心蛙さん、またまたお手数をおかけ致しまして申し訳ありません。
実は私も初心蛙さんのご指摘戴いた行が怪しいなと睨んでおり、色々と変更を施しては
いたのですが、決定打に至らず解決出来ずにいました。
初心蛙さんのお陰で無事に解決する事が出来ました。 本当にありがとうございました。

返信(回答)する


Web裏技