こんにちは。最近フレッツADSLに変更し、ISPのダイナミックDNSも利用できますので、
自前WEBサーバを立ち上げようとしております。

現在、Win2000Proで Apache for win32 1.3.22、 ActivePerl-5.6.1.630で
何とかWEBサーバは稼動しております。

通常のHTMLは表示可能です。CGIも動作しますが、そのCGI内で表示しようとする画像(GIF,JPG,PNG)が表示されません。
(Xマーク状態です。これはcgi-bin配下ディレクトリ内です)プロパティをみても、パスは良さそうなのですが・・。

以前いたISPはcgiwrapを使用していましたので苦労しました。同じ状態です。
confファイルを書き直す事で可能?やっぱりCGIディレクトリに画像は不可?と
2つの疑問で行き詰まっております。
cgiのあるディレクトリに.htaccessを置き
AddHandler server-parsed .gif .jpg .png
でもダメでした。

パスの指定が悪いのかなー^^;なんか、トンチンカンな失敗の気もしますが・・・。
どなたかお力添え頂ければ幸いです。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

画像は、htdocs配下でないとだめなはずです。


どうしてもcgi-binに置きたい場合は、aliaseを設定すれば可能です。
    • good
    • 0
この回答へのお礼

さっそくのレスありがとうございます。・・・やっぱりって感じですか。

お礼日時:2002/01/08 00:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qhttp://www.test.cgi/index などのCGI名のあとのパス名

http://www.test.cgi/index
のようになっているものを見かけるときがあります。普段は
http://www.test.cgi?mode=index
などしているのですが、どのような仕組みになっているのでしょうか?
これはPerlに限らず、CGIとして動作するものなら実装できるのでしょうか?
疑問に思ってしまったので、ご回答のほどをよろしくお願いします。

Aベストアンサー

PATH_INFOと呼ばれる情報です。Perl/CGIであれば環境変数の$ENV{'PATH_INFO'}で取得する事が出来ます。クエリー(?xxx)が$ENV{'QUERY_STRING'}で取得出来る事と同じ要領です。組み合わせてtest.cgi/path/info?query=stringのようにする事も出来ます。(それぞれ上記の環境変数で別々に取り出せます。)

他の言語に関しても取得出来ます。言語名とPATH_INFOで検索をかけてみてください。(例えば『php path_info』等)

Qcgiで拡張子.cgiと拡張子.plの違いってなんですか?

標記の違いはなんでしょうか?
私の使っているサーバがどうも.plしか対応しておらず、困っています。もし、cgiのスクリプトを変形して使えるのであればその方法も教えていただけると助かります。

Aベストアンサー

普通のウェブサーバでは、.cgiはCGIプログラムを見分ける為に使います。つまり、使用言語に関わらず、CでもPerlでもPHPでも、『CGIで』動かすなら.cgiを判断基準にする場合が多いです。これはサーバの設定次第なので、もし設定で.plになっているだけなら、PerlだろうとCだろうと.plで動くと言う事です。(但し、Perl以外の動作環境があるかどうかはサーバ次第です。)

また、普通のウェブサーバでは、.plはPerlコードをウェブサーバが直接解釈する時に使ったりもします。これはCGIのように外部プロセスを起動するのではなく、mod_perl等を用いてウェブサーバ内で解釈してしまうものです。サーバにmod_perlがインストールされている事が前提です。

前者であれば、配付されているCGI等も.cgiを.plに変えて、後は普通に設置すれば動くのがほとんどでしょう。(動かないとすれば別の理由が有力かと思います。)後者であれば、場合によっては若干手を加えなければならないかもしれません。

QCGIからsystem("display test.png");を呼び出すとエラーがでるのですが、なぜでしょうか。

CGIについて質問させていただきます。
初めてCGIでWEBアプリを作っているところです。ちなみにPerlも、初めて勉強しはじめました。私が作りたいものは、CGIから、GNUPLOTを使って画像を出力するものです。

error
display: unable to open X server `'., referer: http://....

コードは以下のようなものです。
#!/usr/bin/perl -w
use HTML::Template;
use strict;

gnuplot no syhori....

system "gnuplot /DS/tmp/gnuplot.plot";
system "cd/DS/tmp;ps2pdf /DS/tmp/gnuplot.ps";
system "convert /DS/tmp/gnuplot.pdf /DS/tmp/gnuplot.png";
system "display /DS/tmp/gnuplot.png";

コマンド(display /DS/tmp/gnuplot.png)や、Perl(CGIではなくPerlだけで試しにやってみました)を実行すると正常に画像が表示されるのですが、CGIの中に書くとエラーが出てしまいます。
どなたかよろしくお願いします。

CGIについて質問させていただきます。
初めてCGIでWEBアプリを作っているところです。ちなみにPerlも、初めて勉強しはじめました。私が作りたいものは、CGIから、GNUPLOTを使って画像を出力するものです。

error
display: unable to open X server `'., referer: http://....

コードは以下のようなものです。
#!/usr/bin/perl -w
use HTML::Template;
use strict;

gnuplot no syhori....

system "gnuplot /DS/tmp/gnuplot.plot";
system "cd/DS/tmp;ps2pdf /DS/tmp/gnuplot.ps";
system "con...続きを読む

Aベストアンサー

> ただ、なぜか画像へのパスを書いても、とどかないんですよ。。。。よく
> わかりません。

Web サーバが任意のディレクトリのファイルを外部に表示できるとセキュリ
ティ上問題があるので、それはそうです。とりあえず、画像ファイルを CGI
スクリプトと同じ場所にコピーして、表示できるか確認したらどうでしょ
う。

Qcgiなんですが....

http://www.kent-web.com/data/mart.html
cgiの買い物かごシステムなのですが、下記のディレクトリ構成例のpublic_htmlってなんでしょうか?自分のレンタルサーバーではトップページ
を表示するにはftpソフトでつなぐとhttpdocsってホルダにindex.htmlをいれますが、そこにpublic_html って書いていれれば、いいのですかね?cgiつくりにダウンロードしたものはmart.cgi,mart_order.cgi ,mart_admin.cgi
mart_init.cgi ,mart.dat ,mart_raw.txt mart.html なんですが、public_html っていうのがみあたりません。
public_html のフォルダの中にホームディレクトリ?がある構成に見えるし、なんでしょう?mart / mart.cgi [755] mart_order.cgi [755]
mart_admin.cgi [755]mart_init.cgi [644]
jcode.pl [644]mart.dat [666]
mart_raw.txt [644]cgiのフォルダにpalのパスかえたり、してパーミッション設定してあげれば、良いのでしょうか?絵では下のような説明になっています。
【ディレクトリ構成例】
public_html / (ホームディレクトリ)
|
+-- mart / mart.cgi [755]
mart_order.cgi [755]
mart_admin.cgi [755]
mart_init.cgi [644]
jcode.pl [644]
mart.dat [666]
mart_raw.txt [644]

http://www.kent-web.com/data/mart.html
cgiの買い物かごシステムなのですが、下記のディレクトリ構成例のpublic_htmlってなんでしょうか?自分のレンタルサーバーではトップページ
を表示するにはftpソフトでつなぐとhttpdocsってホルダにindex.htmlをいれますが、そこにpublic_html って書いていれれば、いいのですかね?cgiつくりにダウンロードしたものはmart.cgi,mart_order.cgi ,mart_admin.cgi
mart_init.cgi ,mart.dat ,mart_raw.txt mart.html なんですが、public_html っていうのがみあたりませ...続きを読む

Aベストアンサー

ページ確認しました。
httpdocsに通常ページを保存し、cgi-bin にCGIを保存するタイプですね。
ただ、
「cgi-bin ディレクトリ以外でも cgi スクリプトは実行できますので別にCGI専用のディレクトリを作成することもできます。」
とあるので「httpdocs」に「cgi-bin」フォルダを作っても同じことのようです。
こちらのほうがフォルダ構成を把握しやすいのでお勧めです。
httpdocs┬─index.html・その他コンテンツページ
    │
    ├image(画像保存フォルダ)
    │
    └cgi-bin─mart─ここにCGIファイルを保存

こんな感じですね。

Qcgiとドキュメントディレクトリ

CGIのプログラムをレンタルサーバー屋さん指定のディレクトリ(ドキュメントディレクトリとは別)に置いた場合、CGIのプログラムからは自分にあてがわれたドキュメントディレクトリ(htmlが置いてあります)を参照することはできるのでしょうか(そこにあるhtmlファイルを読みたいので)。そんな方法があったら教えていただければ幸いです。
Webアプリケーションは初めてで、初心者用の本を見ながら作ってみています。
よろしくお願いします。

Aベストアンサー

パス(URLではなく、サーバ上の配置)がわかれば参照できるはずです。
CGIはapacheなどwebサーバの権限で動きますし、ドキュメントのディレクトリおよびその中にあるhtmlなどのファイルもその権限で参照できるようになっているはずなので。
パスがわからなければレンタルしているサーバー屋さんに確認してください。


このカテゴリの人気Q&Aランキング

おすすめ情報