CGI Chart::Gnuplotの使用法

このQ&Aのポイント
  • CGI Chart::Gnuplotを使用してブラウザからfile.pngを作成する方法を教えてください。
  • コマンドラインからはfile.pngが作成されるが、ブラウザからは作成されない問題が発生しています。
  • sample.plのプログラムを使用していますが、ブラウザに表示されるのはhello-helloだけで、file.pngは作成されません。
回答を見る
  • ベストアンサー

CGI Chart::Gnuplotの使用法

コマンドラインからだと作成されるpngファイルがブラウザからだと作成されません。 ブラウザにデバッグ用のprint文は、表示されます。 http://localhost/~.../sample.pl を実行しても、 ブラウザに hello-helloが表示されるだけで、 file.pngが作成されません。 file.pngをブラウザから作成するには、どうしたら良いのでしょうか? よろしくお願いいたします。 コマンドラインからだと、gnuplotで作成されたfile.pngが作成されます。 bash-3.2$ perl sample.pl Content-type:text/html hello-hello 使用したプログラムは、以下のとおりです。 < sample.pl > #! /usr/bin/perl print "Content-type:text/html\n\n"; #use strict; #use warnings; use CGI; use Chart::Gnuplot; my $chart = Chart::Gnuplot->new( output => "file.png" ); my $dataSet = Chart::Gnuplot::DataSet->new( datafile => "test.data" ); print "hello-hello\n"; $chart->plot2d($dataSet);

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

あくまで一般論ですが, CGI として動かすときとコマンドラインから実行するときとではディレクトリや実行ユーザ, あるいはパスなんかが違うことは多いと思うので, コマンドラインから実行してちゃんと動いたとしても「CGI として動作するかどうか」は別問題だったりします. perl 内部でエラーチェックができるとか, あるいはログにエラーが出ていれば容易に解決できそうなんだけど....

yamaques
質問者

お礼

Tacosan さま 回答、ありがとうございます。 error_logには、何も出力されないので困っていました。 パスの指定をプログラムに加えたところ、ブラウザからpngファイルを作成出来ました。 $ENV{PATH}='/opt/local/bin'; 行き詰まっていて、初めてWEBサイトに質問してみました。 最初の問題が解決できて嬉しいです。 今後も利用させていただきます。 ありがとうございました!!

関連するQ&A

  • chart::gnuplot perl エラー

    初めて質問します。 もしご存知の方がいたら教えてください。 ・Strawberryperl 5.16.3をインストール ・Imagemagick-6.9.0-Q16 をインストール ・Gnuplot4.6 をインストール ・Chart::Gnuplot モジュールをインストール ・OS:Windows8 64bit C:\Program Files\ImageMagick-6.9.0-Q16\PerlMagick\demo\demo.pl をコマンドラインで実行し、起動を確認。 Gnuplot、Imagemagickともに環境変数でPathはとおってます。 コマンドプロンプトで、gnuplot, wgnuplot ともに起動を確認。 以下のコードを実行したところエラーが出て頭を抱えています。 gnuplotとimagemagickのインストールがうまくいったと思ったのですがなぜか動きません。 --------------------- use strict; use warnings; use utf8; use Chart::Gnuplot; my @xdata = qw/ Apr May Jun /; my @ydata = qw/ 3145 3749 3635 /; my $filename = "test.png"; my $chart = Chart::Gnuplot->new( output => $filename, timeaxis => 'x', ); my $dataset = Chart::Gnuplot::DataSet->new( xdata => \@xdata, ydata => \@ydata, style => 'linespoints', linetype => 1, pointtype => 6, timefmt => '%b', ); $chart->plot2d($dataset); ---------------------- 以下エラー内容 convert.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH - dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEV ICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" -g504x720 "-sOu tputFile=C:/Users/Mieko/AppData/Local/Temp/magick-1452Dc6vcLxxdw0R%d" "-fC:/User s/Mieko/AppData/Local/Temp/magick-1452AL8tJ_0U-Cq1" "-fC:/Users/Mieko/AppData/Lo cal/Temp/magick-1452Y727r0aGDb5H"' (指定されたファイルが見つかりません。 ) @ error/delegate.c/ExternalDelegateCommand/458. convert.exe: FailedToExecuteCommand `"gswin32c.exe" -q -dQUIET -dSAFER -dBATCH - dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEV ICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72" -g504x720 "-sOu tputFile=C:/Users/Mieko/AppData/Local/Temp/magick-1452Dc6vcLxxdw0R%d" "-fC:/User s/Mieko/AppData/Local/Temp/magick-1452AL8tJ_0U-Cq1" "-fC:/Users/Mieko/AppData/Lo cal/Temp/magick-1452Y727r0aGDb5H" -c showpage' (指定されたファイルが見つかりませ ん。 ) @ error/delegate.c/ExternalDelegateCommand/458. convert.exe: Postscript delegate failed `指定されたファイルが見つかりません。 ' @ error/ps.c/ReadPSImage/941. convert.exe: no images defined `C:\Users\Mieko\AppData\Local\Temp\If7Fvb0CUD\plo t.tmp.png' @ error/convert.c/ConvertImageCommand/3210.

  • cgi-lib.plのオフラインでの使用

    cgiの勉強をしています、Foolisともうします。 タイトルの通り、cgi-plをオフラインで使用したいのですが、やり方がわかりません。 今、httpdを使用して、 http://127.0.0.1/hello.cgi にアクセスしたら、(hello.cgiは以下の通り) ______________________ #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<H2>Hello! WORLD</H2>\n"; print "</BODY></HTML>\n"; exit; _____________________________ ちゃんとHello! WORLDと表示します。 form.htmlおよび、form.cgiを http://www.try-net.or.jp/~tanukiti/hp-add/cgi_learning/kl_cgi_09.html ここのページのように入力し、ファイルを作成したのですが、上手く動きません。もし解決策をご存知の方がいましたらよろしくおねがいいたします。

    • ベストアンサー
    • Perl
  • ApacheでCGIが正しく動かない。

    RedHatLinux8をインストールして、 Webサーバーを立てよう~と思い立ててみました。 Apache2.0.40です。 一応htmlファイルはのぞけるようになったんですが、 CGIがちょっとおかしくて・・・ #!/usr/bin/perl print "Content-type: text/html\r\n\r\n"; print "Hello, World."; ↑を書いたtest.plはHello, Worldとちゃんと表示されました。 しかし、掲示板・カウンターを開くと・・・ 「ログファイルを開くことができません」 という主旨のメッセージが表示され、正しく実行できません。 ./log.txt とちゃんと指定しているんですが・・・ そのログファイルを開くとサーバーがCGIをして認識しているらしく、 「InternetServerError」が出て開けない・・・。 CGIの属性は755 ログも緩くして755に設定しました。 それでも状況は変わりません。

  • ブラウザ表示できません

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”http://localhost/cgi-bin/hello.pl” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします。

    • ベストアンサー
    • Perl
  • ブラウザが表示されません

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”​http://localhost/cgi-bin/hello.pl​” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします

  • ブラウザが表示されません!!!!!!

    perl初心者です。これから勉強しようとしてます。 ですが、プログラムを打つ前に早速難関が・・・ perlをブラウザで表示しようとしてるのですが、出来ません!!(><) 本の通りに次のような作業をしました。 __________________ 1、ActivePerlのインストール 2、AN HTTPDのインストール 3、試しにcgi-binフォルダ内にhello.plの作成。 内容___________ #!/usr/bin/perl print"content-type: text/html\n\n"; print "Hello,world!"; _______________ と、打ち、コマンドプロンプトでperl hello.plと、入力すると、 content-type: text/html Hello,world! と、出力されます。 ですが、本の通り、ブラウザのアドレスバーに ”​http://localhost/cgi-bin/hello.pl​” と、入力すれば、Hello,world!と、表示されるはずなのに されません。 ちなみに、 サーバーが見つからないか、DNS エラーです。 と、表示されます 同じような質問があり、そこでの対策も試してみましたが、 どれも効果がありません。 初歩的な質問で申し訳ありません。 しかし、これからperlを勉強するに当たって避けては通れない道だと 思い、質問しました。 解決策以外にも他の方法でブラウザで表示する方法が あれば、そちらも試してみたいと思ってますので、 そちらのほうも、紹介していただけるなら、よろしくお願いします。

  • CGIファイルの送り方教えて下さい

    はじめまして!超初心者です。 最近CGIを本を見ながら勉強しているんですが ファイルの送信の仕方が分かりません。やはり HTMLファイルとは送信の仕方が違うのでしょ うね?誰か教えて下さい。 (FTPソフトはFetchです。) ちなみに送りたいファイルは --------------------------------- #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<H1>Hello!</H1>\n"; print "</HTML>\n"; --------------------------------- です。

    • ベストアンサー
    • CGI
  • 外部コマンドで返された値をCGIで取り込むには?

    外部コマンドで返された値をCGIで取り込むには? 環境:Activeperl 5.8.9/IIS6/Windows2003Server [hello.cgi] ==================================== #! /Perl/bin/perl #HTMLヘッダーを出力します print "Content-type: text/html\n\n"; print "エコーのテスト<BR>"; my $msg=`echo hello`; print "エコーは".$msg."です"; exit; ==================================== 上記cgiを、Windowsのコマンドプロンプト上で「c:\perl>hello.cgi」とすると、ちゃんとDOS窓上で動きますが。同ファイルに 対して、http://www.test.com/scripts/hello.cgi とすると、ブラウザ上にて、 ============= エコーのテスト エコーはです ============= のような感じになって、$msgを出力してくれません、どうしてでしょうか?お知恵をおかしください。

    • ベストアンサー
    • Perl
  • perlのprint文がうまく動きません

    perlの勉強を始めました。 perlの本の最初に Hello.plというファイルに print”Hello!”;と記述して perl Hello.plとすると画面にHello!と表示されるとあるのですが、何も表示されません。 ファイルの記述をprint ”Hello!\n";としてやるとHello!と一応表示されるのですがなぜ改行が必要になるのかがよくわかりません。どのように理解すればいいのでしょうか?

  • Perlで作成したCGIについて

    Perlで作成したCGIについて Perlで作成したCGIについて質問させていただきます。 #################### ##(1)system.cgi ## #################### #!c:/Perl/bin/perl.exe use strict; use warnings; use CGI; use CGI::Carp('fatalsToBrowser'); use CGI qw(:standard); print "Content-type:text/html;charset=utf8\n\n"; system('C:\\test.txt'); ##################################################### C直下にあるtest.txtの中身は「abcd」など 簡単なものです。 ##################################################### ################### ##(2)win32.cgi ## ################### #!c:/Perl/bin/perl.exe use strict; use warnings; use CGI; use CGI::Carp('fatalsToBrowser'); use CGI qw(:standard); use Win32::API; print "Content-type:text/html;charset=utf8\n\n"; my $MessageBox = Win::API -> new("user32","MessageBoxA","NPPN","N"); $MessageBox -> Call(0,"HelloWorld","Message",0); ##################################################### ##################################################### 以下にスペックを書きます。 Microsoft Windows XP Professional version2002 Service Pack2 Genuine Intel(R)CPU L2300 @1.50GHz 1.50GHz,1.49GB RAM ・ActivePerl ver5.10.1 built for MSWin32-x86-multi-thread ・Apache Apache 2.2.14(Win32) ##################################################### 上記の(1)、(2)のプログラムをエクスプローラ上(ローカル)で実行させて(1)ではテキストファイルを、 (2)ではメッセージボックスを表示させたいです。 結果は時間がかかるだけでTimeOutの設定である5分で切れてしまい何も起こりません。 しかし、全く同じプログラムで拡張子を.plに変更してコマンドプロンプトで実行すると、 期待通り(1)はテキストファイルが開かれ、(2)ではメッセージボックスが出てきます。 (1)、(2)ともCGIではsystemおよびMessageBoxの部分をコメントアウトして print文などを書けば普通にエクスプローラに表示されます。 (かなりhtmlとしては不備があると思いますが・・・) どうすればCGIで(1)、(2)のプログラムが期待通りの動きをするのか どうぞご教授のほどよろしくお願いいたします。 何か足りない情報や意味の分かりづらい個所がありましたら、仰ってください。 ちなみにこのプログラムは公開するために作成しているのではありません。 下手な説明、長文すみません。