プロが教えるわが家の防犯対策術!

以下の環境でjpgraphでグラフを表示されません(画像が存在しないような×印になる)。どこか設定を変更・調整する点は無いでしょうか?
宜しくお願いいたします。
・php5
・linux(FedoraCore5)
http://www.asial.co.jp/jpgraph/japanese.php の設定は完了。
・サンプル(~jpgraph/Examples/各.php)は表示されることを確認。
・バグトラッキングシステム mantis で使用。

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

A 回答 (1件)

何かしらのエラーが出てるんじゃないでしょうか?


error_logは確認しましたか?

×印になる場合、何らかのテキストが表示されたりする場合もあります。
直接ブラウザにURLを入力してみたり、パケットモニターなどを使って、どのような情報が帰ってくるのか見てみるのもいいのではないでしょうか。

この回答への補足

あいがとうございます。
error_logを確認したところ、「php_gd2.dll がない」的なメッセージだったので、php.ini の 「extension=php_gd2.dll」のdirとして設定されているディレクトリを確認したところ、php_gd2.dllが存在しませんでした。これが関係しているのでしょうか?ルートから検索してもphp_gd2.dll(php_gd2.soも)が存在しません。これが原因の場合、php_gd2.dllをインストールにはどうしたらよいのでしょうか?

補足日時:2007/12/04 17:51
    • good
    • 0

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

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

QJpGraphのグラフをうまくサイトにはめ込みたいが・・

JpGraphを使用してデータベースから抽出したデータをサイトに
表示したいと思っています。

メインのサイトから、
名前、パスワード、期間等を入力ポストして、
次画面にてグラフ表示したいと思っています。

グラフ表示するだけなら、メインサイトで
<form method="post" action="graph.php">
<input type="text" name="name">
:
</form>

graph.php内でデータ抽出・グラフ出力でOKだと思うのですが、
次画面ではグラフだけでなく<html>に埋め込んだ形でいろいろと
他の情報も表示したいと思っています。
<html>
<body>
検索結果・・・
<img src="graph.php">
:

graph.phpには名前やパスワード等の情報も送らなければいけないので
どのような方法で行なわなければいけないのか、よくわかりません。

お知恵お貸しください。

Aベストアンサー

>名前やパスワード等の情報

通常イメージをはかせるときはgetでパラメータわたししますが、
流石にパスワードなどはまずいですね。

ひとつはauthを設定しておく手があります。
ユーザー名やパスワードはauthを通ってきているのであれば
入力する必要はないでしょう。

もうひとつはセッションを利用する。
セッション内でユーザー名とパスワードを管理すれば、
こべつのファイルに対して設定する必要はなくなります。

場合によってはクッキーでも同様の管理ができるかもしれません

QJpGraphがうまく設定できない?

自分のPCにJpGraphをいれることにしました。
PHPのiniファイルを直し、JpGraphのconfig.incも
サイトを参考に書き直したのですが、そのサイトにあるサンプルの
ソースを表示しようとすると以下のエラーがでます。

Warning: main(JpGraph/jpgraph.php): failed to open stream: No such file or directory in D:\Apache2\htdocs\g.php on line 3

Fatal error: main(): Failed opening required 'JpGraph/jpgraph.php' (include_path='D:\php\include\JpGraph') in D:\Apache2\htdocs\g.php on line 3

パソコンの環境を簡単に説明すると、Apach,phpともにDドライブにおいてあります。

PHPのiniファイルには、
include_path="D:/php/include"を設定し、D:\php\include\JpGraphというフォルダに、解凍したjpgraphの中身をすべて入れました。

JpGraphのconfig.incには、
DEFINE("TTF_DIR", "c:/winnt/fonts/");
DEFINE("MBTTF_DIR", "c:/winnt/fonts/");
DEFINE('MINCHO_TTF_FONT', 'MSMINCHO.TTC');
DEFINE('PMINCHO_TTF_FONT', 'MSMINCHO.TTC');
DEFINE('GOTHIC_TTF_FONT', 'MSGOTHIC.TTC');
DEFINE('PGOTHIC_TTF_FONT', 'MSGOTHIC.TTC');

を記載しました。

あとは、
http://www.gadgety.net/shin/tips/win/jpgraph.html
のサイトにあった、円グラフを書くサンプルをそのままコピーして、
Apachのところにいれただけです。

何が間違っていてエラーがでるのでしょうか?

自分のPCにJpGraphをいれることにしました。
PHPのiniファイルを直し、JpGraphのconfig.incも
サイトを参考に書き直したのですが、そのサイトにあるサンプルの
ソースを表示しようとすると以下のエラーがでます。

Warning: main(JpGraph/jpgraph.php): failed to open stream: No such file or directory in D:\Apache2\htdocs\g.php on line 3

Fatal error: main(): Failed opening required 'JpGraph/jpgraph.php' (include_path='D:\php\include\JpGraph') in D:\Apache2\htdoc...続きを読む

Aベストアンサー

ちょっとお茶でも飲んで冷静になってからエラーをよく見てみるといいと思います。

Warning: main(jpg-config.inc): failed to open stream: No such file or directory in d:\php\include\JpGraph\jpgraph.php on line 13

といわれていますよね。
jpg-config.inc を開くのに失敗しました。
そんなファイルやディレクトリはないと言っています。

jpg-config.inc はどこにありますか?

あるとしたらパスは通っていますか?

QPOSTで受け取った値をもとにJpGraphでグラフ化したいです。

こんにちは。
いつもお世話になっております。

今グラフPHPを↓のように書いています。
<?php
require_once("jpgraph/jpgraph.php");
require_once("jpgraph/jpgraph_line.php");
//グラフの作成
$a = 75;
$b = 24;
$c = 5;
$d = 56;
$e = 12;

$graph = new Graph(400,300,"auto");
$graph->SetScale("textlin");
$label = array("Apr","May","June","Lul","Aug");
$graph->xaxis->SetTickLabels($label);
//拝啓の色指定
$graph->ygrid->SetFill(true,'#EFEFFF@0.5','#DDEEFF@0.5');
//線1のプロット
$data = array($a,$b,$c,$d,$e);
$plot = new LinePlot($data);
$plot->mark->SetType(MARK_FILLEDCIRCLE);
$plot->mark->SetFillColor("blue");
$plot->mark->SetWidth(3);
$plot->SetColor("blue");
$plot->SetLegend(total);
$graph->Add($plot);

これ↑は、ちゃんと表示されたので、
$a = 75;
に入っている部分を、
$a = $_POST["1gatu"];
$b = $_POST["2gatu"];

にしてみたのですが、折れ線のない
グラフだけ(枠組みだけ)が表示されて
しまいます。

JpGraphでは、このような使い方は
出来ないのでしょうか・・・・?

どうかご指導よろしくお願いいたします。

こんにちは。
いつもお世話になっております。

今グラフPHPを↓のように書いています。
<?php
require_once("jpgraph/jpgraph.php");
require_once("jpgraph/jpgraph_line.php");
//グラフの作成
$a = 75;
$b = 24;
$c = 5;
$d = 56;
$e = 12;

$graph = new Graph(400,300,"auto");
$graph->SetScale("textlin");
$label = array("Apr","May","June","Lul","Aug");
$graph->xaxis->SetTickLabels($label);
//拝啓の色指定
$graph->ygrid->SetFill(true,'#EFEFFF@0.5','#DDEEFF@0.5');
//線1...続きを読む

Aベストアンサー

$a = $_POST["1gatu"];
$b = $_POST["2gatu"];

おもむろに変数に放り込んで使っていますが、この受け渡されたモノは本当に数値なのでしょうか?
キャストに頼らず、数値であることを明示的にチェックしてからキャストしたほうが、良いと思います。
$_POSTが非数値だったら、$xにはなんらかのダミー値を入れるとか・・・

jpgraphは、使ったことがないのですが、LinePlotに与える配列は数値じゃなきゃダメ、ってことはないですか?
この$aがいきなり非数値だから、以降のプロットが描画されない、という状態ではないのでしょうか?

QPHPで別PHPを呼び出す。

PHPプログラムないで別PHPを呼び出し戻り値を受け取ろうと考えています。


test1.php-------------
<?php
print "<html><body>\n";
$return_data= exec(/usr/local/bin/php ./test2.php?param1=1¶m2=2);
print $param1."+".$param2."=".$return_data;
print "</body></html>";

test2.php------------------
<?php
$return_item = $param1 + $param2;
print $return_item;
?>

のように、test1.phpからパラメータを渡し、
test2.phpで計算をして答えをtest1.phpに返す
プログラムを作成しました。

test1.phpからtest2.phpをパラメータをつけて渡すのが
うまくいきません。

execではパラメータをつけることはできないのでしょうか?もしくは他の方法はないでしょうか?

functionやincludeではなく上記の方法で行いたいと思っております。

お手数ですが、アドバイスお願い致します。

PHPプログラムないで別PHPを呼び出し戻り値を受け取ろうと考えています。


test1.php-------------
<?php
print "<html><body>\n";
$return_data= exec(/usr/local/bin/php ./test2.php?param1=1¶m2=2);
print $param1."+".$param2."=".$return_data;
print "</body></html>";

test2.php------------------
<?php
$return_item = $param1 + $param2;
print $return_item;
?>

のように、test1.phpからパラメータを渡し、
test2.phpで計算をして答えをtest1.phpに返す
プログラムを作成しまし...続きを読む

Aベストアンサー

こんにちは。

CやJAVAやっていれば、すぐわかるのでしょうが・・・。
コマンドライン上からパラメータを渡す方法を考えてください。

PHPのようなC言語ライクな言語では慣用的に、

argv や argc といった「arg」が付く変数名が特別な扱い方をされます。
JAVAだと args ですね。
で、PHPだと、
$argv と $argc になります。

$argv は、引数で渡されたパラメータの配列です。
$argc は、パラメータの個数が格納されています。

パラメータの渡し方は、

"/usr/local/bin/php ./test2.php aaa bbb"

のように、半角で区切った形になります。

GETのように、スクリプトのあとに aaa=bbb&ccc=ddd と渡すと
「&」以降が特殊な値ととられてしまいます。

具体的にいうと、 test2.php のパラメータを受け取る部分は以下のようになります。

$param1 = $argv[1];
$param2 = $argv[2];

で、$argv[0] には、./test2.php が入っています。(実行させたいスクリプトへのパス)
また、$argc には、3 が入っています。(配列$argv の要素数)

次に、実行結果を受けとる方法ですが、

test2.phpから、実行結果を受け取りたい場合は、exec 関数は、他の言語の exec 関数より便利に出来ています。

test1.php を以下のようにしてください。

exec("/usr/local/bin/php ./test2.php aaa bbb" , $rec , $status);
if ($status != 0){
print "失敗しました";
exit(1);
}

test2.php は、

print $return_item;
exit();
?>

とした場合、
$rec に print で出力した結果が入っていると思います。

※注意

実をいうと $rec には意図した結果以外に色々なデータも入っています。
たとえば、test2.php で、

$aaa = "aaaa";

print $aaa;

とした場合、
$rec には、

$rec[0] : Content-type: text/html; charset=EUC-JP
$rec[1] : X-Powered-By: PHP/5.0.2
$rec[2] :
$rec[3] : aaaa

という値が入っています。
$rec[0] から $rec[2] までは環境によって違います。つまり、test2.php から受け取ったデータが $rec のどの要素に入っているかは、環境によって違ってきますので、まず、


exec("/usr/local/bin/php ./test2.php aaa bbb" , $rec , $status);
if ($status != 0){
print "失敗しました";
exit(1);
}
print_r($rec);


で、確認してみてください。

こんにちは。

CやJAVAやっていれば、すぐわかるのでしょうが・・・。
コマンドライン上からパラメータを渡す方法を考えてください。

PHPのようなC言語ライクな言語では慣用的に、

argv や argc といった「arg」が付く変数名が特別な扱い方をされます。
JAVAだと args ですね。
で、PHPだと、
$argv と $argc になります。

$argv は、引数で渡されたパラメータの配列です。
$argc は、パラメータの個数が格納されています。

パラメータの渡し方は、

"/usr/local/bin/php ./test2.php aaa bb...続きを読む


人気Q&Aランキング