ご無沙汰しております、さるぞうです。
おやっさん一つ質問が有るのですがお聞き願えないでしょうか?
と言いますのも、win2000にactiveパールを入れて使いますと(WIN系と言うことなのでしょうが)、CGIの中で画像を扱おうとすると表示されないのです。(例えばこの掲示板ですが、家のFIGやバックの画像が表示されてますよね)これは、おやっさんの方でスクリプトを修正してお使いになってるのでしょうか? それとも、パール等の設定で何とか出来る物なのでしょうか? いきなりの質問で申し訳ございませんが、どうかご教授お願いします。
さるぞうさん。こんにちは。
ご質問の件、おやじはあまり詳しくはありませんが、CGIで画像が表示できない例(経験済みを含む)として思いつくことをいくつかあげます。なお、おやじのHPはWindows2000 + ActivePerlの環境で、Perlは何もいじっていません。
1.画像が見えないというのはどこから見てのことでしょうか? /で始まる絶対パス指定の場合、位置関係が合わなくなるのでサーバ機で確認してもだめですよ。おやじは、必ずダイヤルアップで外部から覗いて確認しています。これが、できない場合(ADSLとダイヤルアップの二重ログインを規制しているプロバイダがあるようです)、友達等に確認してもらうしかないでしょう。
2.この掲示板のバックは、KENTさんのCGIを変更してしていますが、http:// から始まるパスで書くようにコメントがありますが、http://acorn・・・とやると、DDNSのため家の中からでは、DNSを引いた結果がADSLモデムのWANアドレスになってしまい、うまく表示できません。かといって、http://192.・・・では、外部から見えませんよね。従って、「../gif/blue_p9b.gif」のように絶対パスで指定しています。
3.絶対パスの指定が誤っていて(./gif/blue_p9b.gifのように . が少ない等)、ターゲットが見つからないケース。これは、Apacheのアクセスログで404になるのでわかる。
4.上記のような、http:// から始まるパスや、/で始まるパスで画像のあるディレクトリまで指定する場合、最後のスラッシュ(/)を省かないと表示されないことが多い。「../gif/blue_p9b.gif/」は、ダメ。
5.パーミッションの設定が誤っている。ディレクトリやCGIごとに指定されたパーミッションにしないと、当然うまくいかない。
ぐらいですかね。参考になれば。HPできたらあるいは作成中でも教えていただけたら(メール可)、見に行きますが。
なお、HPできたら相互リンクお願いします。
早速のレスありがとうございます。
上から(1〜5)確認してみます。結果は報告しますので宜しくお願いします。
追伸
5番目のパーミッションはWindowsでも必要ですか?
その場合の設定ってどうやって行えばよろしいでしょうか?
もう一つ追伸
1に関してなのですが、LANに繋いだPCから見ています。
具体的には、http://192.168.x.x/cgi-bin/yybbs/yybbs.cgi
って感じです!
パーミッションの設定はWindowsでも必要です。Windowsで一番簡単で確実な方法は、FFFTPを使用して転送先のファイルをマウスで右クリックして、ポップアップメニューから[属性変更]で変更する方法です。わかり易いです。FFFTPは、
http://www.forest.impress.co.jp/ftp.html
からどうぞ。
アクセス方法はあってます。画像が見えないだけですよね?
CGIそのものが動いていないということではないですよね?
windowsというのは、WIN系サーバと言うことなのですが、それでも必要なのでしょうか? FFFTPで属性変更して見たのですが、変更されないのです。どうしたものか。。。
さるぞうさん。
歯痛のため痛み止めを飲んでいたためか、おやじパソコンが吹っ飛んだショックからかわかりませんが、少し誤った情報を流してしまったようです。Windows系(さるぞうさんのサーバ機のOSはWindows2000 Proですか?クライアントはXPのようですが。)でサーバを建てているなら、パーミッションは関係ありません。失礼しました。
ところで、さるぞうさんの書いてくれたアクセス方法を見て気が付いたのですが、yybbsフォルダをどこに置いているのですか?http://192.168.x.x/cgi-bin/yybbs/yybbs.cgi
ということは、
..ドキュメントルート / index.html(トップページ)
.......|
.......+-- cgi-bin
.............|
.............+-- yybbs / yybbs.cgi
...................| yybbs.log
...................| count.dat
...................| jcode.pl
...................|
...................+-- img / home.gif
...................| *.gif
...................|
...................+-- lock /
(.は無視してください。絵がおかしくなるので入れて有りますので)
というフォルダ構造になっているはずですが、あってますか?
一般的には、ドキュメントルートフォルダの中に、index.htmlファイルとyybbs、img、lockフォルダがある構成 (上記のcgi-binが無い状態)だと思います。そうしないと、yybbs.cgiの中のパスがおかしくなります。もし現在そういう構造なら、アクセス方法が間違っています。http://192.168.x.x/yybbs/yybbs.cgiです。
上記の構成(cgi-binがある構成)の様なら、cgi-binフォルダを止めてドキュメントルートの下にyybbs以下のフォルダを置いて、http://192.168.x.x/yybbs/yybbs.cgiでアクセスしてみてください。
おやっさん、ご返事遅くなりまして申し訳ありません、さるぞうです。徹夜の仕事が入っておりBBSに目を通せませんでした。
サーバはwin2000adserver使ってます。
フォルダー構造は、上記の図のような構造になってます。そこで、試してみたのですが、imgフォルダーだけをindex.htmlと同じ階層に持っていくことで、以前のアドレスでFIGの表示が出来ました。(cgi-binはそのままで)確かに、http://192.168.x.x/yybbs/yybbs.cgiだと、cgi-binフォルダーからデータを出す形になりますね。この場合、どちらの方法でも良いんでしょうか? IMGフォルダーだけ離すというのは後から障害がでるのでしょうか。。。 動けば問題ないと言うことなのかな。。。 それとも、スタンダードなCGIの置き方なる物があるのでしょうか? 質問ばかりでごめんなさいです。
さるぞうさん。yybbsは、index.htmlと同じ階層で動かすことを前提にしていると思います。cg-binの階層にyybbsフォルダを持ってきたらうまく動きませんかね。おやじはこの方法です。
ダメなら、KENTさんのHPのFAQにあるように、yybbs.cgiのgifの設定を変更しないとダメなのではないかと思います。階層は変わっていないので、「./gif/」でいいはずなのですが。
ところで、おやじはlinuxを遊び半分ではじめましたが、難しいですね。やっとHPが見えるところまでいったのですが、CGIがうまく動きません。予備機を作ろうとして、どうせならと思いチャレンジしていますが、なかなか・・(~_~;)
CGIの件ですがありがとうございました。これからも色々試してみます。
Linaxですか、良いですね。うちもRedhatとPCがもう一台(余った物の組み合わせ(^▽^笑))有るのでインストしてみようかと思います。 自分の場合サーバのバックアップはシステムのみですが(データは40G程有るのでまた別に。。。。)、ストリーマーにてBACKUPしてます。今月末に光が入るので楽しみにしてるのですが、実際どんな感じかなと思っています。これからも、色々やっていこうと思っています。報告等もこちらにあげていきますね。
Linuxでてこずっています。いろいろやっているのですが、CGIがダメです。まあ、あせらずにやっていこうと思います。
光とはいいですね。ADSLは不安定なのが、いただけません。ISDNの影響を受けているのはわかっているのですが、もしかすると、Bフレッツのマンションタイプが入ってくる可能性があるので、収容替えは様子見といったところ。
ところで、ずいぶん遅く(早く?)にきてくださっているのですね。今後もよろしくお願いします。