【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

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の中に書くとエラーが出てしまいます。
どなたかよろしくお願いします。

A 回答 (3件)

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

。。。よく
> わかりません。

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

この回答への補足

はい、ためしてみました。CGIの下の階層においてみるとうまく表示できました。
ということは、PERLのコマンドで(system "mv /DS/tmp/gnuplot.png ~/apache/ ")をすれば、とりあえず移動後のポジションで表示できるってことですね!!ありがとうございます。ただ、まだDISPLAYコマンドの方もきになるので、もし何か知っていれば宜しくお願いします。

補足日時:2009/09/08 21:51
    • good
    • 0
この回答へのお礼

どうも、ありがとうございました.助かりました。

お礼日時:2009/09/10 01:07

質問については、一人目の方の回答で済んでいるかと思います。

ところ
で、まさかとは思いますが、やりたいことはWeb ブラウザに画像を表示さ
せたいということでしょうか? Web ブラウザに画像を表示させるとは
例えば、以下のような HTML を CGI で表示させることなんですが。
(わかっているようでしたら、失礼しました)

<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<title> </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<img src="./image.jpg" />

</body>
</html>

この回答への補足

ありがとうございます。表示することができれば本当はなんでもいいんです.
ただ、なぜか画像へのパスを書いても、とどかないんですよ。。。。よくわかりません。
../../DS/tmp/gnuplot.pngのようにして、相対パスを指定したいのですが、ある一定の場所よりうごきません。
File dose not exist error /srv/www/htdocs/DS,
なにかの設定の関係でしょうか。ちなみにDSはSRVと同じ階層にあります.もし何かご存じであればよろしくお願いします。

補足日時:2009/09/08 21:17
    • good
    • 0

GNUPLOT は使った事が無いのですが、



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

と出るからには Xクライアントなんですね。

DISPLAY環境変数か --display コマンドスィッチで表示先を設定する必要があると思います。

この回答への補足

ありがとうございます。ためしてみました。
system "display test.png -display kaisyamei.com:12.0";
ロードしているようなのですが、何も表示されませんでした。そしてエラーもでませんでした。(localhost:12.0もだめでした.)
書き方がまちがっているでしょうか? ちなみに12という数字は、envコマンドで調べました DISPLAY=localhost:12.0
ちなみにSSHをつかって、アクセスしプログラムを書いています。(あまり良く分かってないので余計な情報であればすいません。)

補足日時:2009/09/08 20:08
    • good
    • 0
この回答へのお礼

どうも、ありがとうございました.勉強になりました。

お礼日時:2009/09/10 01:08

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


おすすめ情報