• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

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

kenpanch7
質問者

お礼

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

kenpanch7
質問者

補足

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

その他の回答 (2)

回答No.2

質問については、一人目の方の回答で済んでいるかと思います。ところ で、まさかとは思いますが、やりたいことは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>

kenpanch7
質問者

補足

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

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

GNUPLOT は使った事が無いのですが、 > display: unable to open X server `'., referer: ​http://.... と出るからには Xクライアントなんですね。 DISPLAY環境変数か --display コマンドスィッチで表示先を設定する必要があると思います。

kenpanch7
質問者

お礼

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

kenpanch7
質問者

補足

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

関連するQ&A