酷!學園

技術討論區 => 程式討論版 => PHP程式設計討論區 => 主題作者是: NARs 於 2009-11-03 21:07

主題: jpgraph圖形無法呈現
作者: NARs2009-11-03 21:07
各位大大
因為目前需要存取mysql的資料並繪製成曲線圖,所以使用jpgraph ,下面是我新增的程式碼test.html
代碼: [選擇]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jpgraph</title>
</head>

<body>
<?php
include ("jpgraph/jpgraph.php");
include (
"jpgraph/jpgraph_pie.php");
include (
"jpgraph/jpgraph_pie3d.php");

$data = array(4060213350);

$graph = new PieGraph(400200);
$graph->SetShadow();

$graph->title->SetFont(FF_BIG5FS_NORMAL);
$graph->legend->SetFont(FF_BIG5FS_NORMAL);
$graph->title->Set("中文");
$p1 = new PiePlot3D($data);

$p1->SetSize(0.5);
$p1->SetCenter(0.45);
$p1->SetLegends(array("中文","2","3","4","5"));
$graph->Add($p1);

$graph->Stroke();
?>


</body>
</html>




,但是在IE和firefox上時,卻無法出現圖形,只有下列訊息 , 請問各位高手是那裡錯了嗎??

代碼: [選擇]
SetShadow(); $graph->title->SetFont(FF_BIG5, FS_NORMAL); $graph->legend->SetFont(FF_BIG5, FS_NORMAL); $graph->title->Set("中文"); $p1 = new PiePlot3D($data); $p1->SetSize(0.5); $p1->SetCenter(0.45); $p1->SetLegends(array("中文","2","3","4","5")); $graph->Add($p1); $graph->Stroke(); ?>
主題: 回覆: jpgraph圖形無法呈現
作者: Yamaka2009-11-03 21:41
各位大大
因為目前需要存取mysql的資料並繪製成曲線圖,所以使用jpgraph ,下面是我新增的程式碼test.html
代碼: [選擇]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jpgraph</title>
</head>

<body>
<?php
include ("jpgraph/jpgraph.php");
include (
"jpgraph/jpgraph_pie.php");
include (
"jpgraph/jpgraph_pie3d.php");

$data = array(4060213350);

$graph = new PieGraph(400200);
$graph->SetShadow();

$graph->title->SetFont(FF_BIG5FS_NORMAL);
$graph->legend->SetFont(FF_BIG5FS_NORMAL);
$graph->title->Set("中文");
$p1 = new PiePlot3D($data);

$p1->SetSize(0.5);
$p1->SetCenter(0.45);
$p1->SetLegends(array("中文","2","3","4","5"));
$graph->Add($p1);

$graph->Stroke();
?>


</body>
</html>




,但是在IE和firefox上時,卻無法出現圖形,只有下列訊息 , 請問各位高手是那裡錯了嗎??

代碼: [選擇]
SetShadow(); $graph->title->SetFont(FF_BIG5, FS_NORMAL); $graph->legend->SetFont(FF_BIG5, FS_NORMAL); $graph->title->Set("中文"); $p1 = new PiePlot3D($data); $p1->SetSize(0.5); $p1->SetCenter(0.45); $p1->SetLegends(array("中文","2","3","4","5")); $graph->Add($p1); $graph->Stroke(); ?>

訊息? 那個是你的程式碼呀~
檢查一下log是否有訊息, 或是打開 display_errors, 看有沒有什麼訊息出現, 也可能是程式碼裡隱藏了什麼看不到的符號吧?  ::)
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-03 21:48
高手~

我知道所顯示的訊息是我的程式碼,只是為什麼會顯示出程式碼?
你所說的"log是否有訊息, 或是打開 display_errors, 看有沒有什麼訊息出現" , 請問要如何檢查??
主題: 回覆: jpgraph圖形無法呈現
作者: Yamaka2009-11-03 21:57
php.ini 裡有 display_errors = Off 的設定, 這是預設值
改成 On, 然後重新啟動 web server
這樣錯誤訊息就會直接顯示在網頁上
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-03 22:05
高手~
修改了php.ini,也重新啟動apach了,但是從瀏灠器(IE和firefox)預覽還是一樣的訊息
主題: 回覆: jpgraph圖形無法呈現
作者: hoyo2009-11-03 22:10
test.html....???

你的 apache 有設定 html 使用 php 解析嗎?
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-03 22:14
應該是有喔~
因為其它沒有用到jpgraph的html都可以顯示喔
主題: 回覆: jpgraph圖形無法呈現
作者: TyroneYeh2009-11-04 08:56
檢視一下原始碼吧? 是不是還是 php 的 source
弄個 <?php phpinfo(); ?> 檔案看看
跑的出 php 的相關資訊嗎?
主題: 回覆: jpgraph圖形無法呈現
作者: micmic32009-11-04 09:18
應該是有喔~
因為其它沒有用到jpgraph的html都可以顯示喔
其它沒有用到jpgraph的html 有用到 php 嗎?
主題: 回覆: jpgraph圖形無法呈現
作者: Yamaka2009-11-04 09:29
應該是有喔~
因為其它沒有用到jpgraph的html都可以顯示喔

預設是不會解析html
樓主最好先試一下
或是改成 test.php
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 12:04
注意事項:

我用的是3.0.6版...
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 13:16
各位高手~
1.使用<?php phpinfo(); ?>可以跑出php 的相關資訊 : PHP Version 6.0.0-dev
2.若是執行test.php
Warning: include(jpgraph/jpgraph.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 10

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph.php' for inclusion (include_path='.;C:\php6\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 10

Warning: include(jpgraph/jpgraph_pie.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 11

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph_pie.php' for inclusion (include_path='.;C:\php6\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 11

Warning: include(jpgraph/jpgraph_pie3d.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 12

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph_pie3d.php' for inclusion (include_path='.;C:\php6\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 12

Fatal error: Class 'PieGraph' not found in C:\AppServ\www\jpgraphtest\GDexample.php on line 16
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 13:35
建議還是先用php-5.2吧...看起來你也是用AppServ?所以可以下載AppServ 2.5.10來安裝。

然後看一下你設定的php.ini裡面的include_path,(舉例)我的是在C:\AppServ\php5\PEAR,然後解開你下載的jpgraph壓縮檔,把解出來的src目錄改名為jpgraph,然後把這個目錄拷貝到C:\AppServ\php5\PEAR。這樣不論你的php放在哪裡,都可以使用include('jpgraph/*.php')...
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 13:54
所以我要把PHP6移掉嗎?
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 14:42
大部分東西跟php6的相容性都不確定的情況下,你還是先用php5吧。當然在php6也許可以跑啦...但是出了問題就...。另外也建議先不要用5.3,畢竟你只是自己做測試看東西在php上會不會跑,而不是在研究php語言的新規格。

至少我早上花個十幾分鐘就已經從下載jpgraph進展到用你提供的php跑出圖表了,所以我想我用AppServ2.5.10應該是沒問題的。
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 15:08
高手~
我已經下載並安裝AppServ2.5.10, 也可以用<?php phpinfo(); ?>印出PHP資訊(PHP Version 5.2.9-2)
並且下載jpgraph壓縮檔,並把解出來的src目錄改名為jpgraph,然後把這個目錄拷貝到C:\AppServ\php5\PEAR
但是我執行GDexample.html如下的程式碼
代碼: [選擇]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jpgraph</title>
</head>

<body>
<?php
include ("jpgraph/jpgraph.php");
include (
"jpgraph/jpgraph_pie.php");
include (
"jpgraph/jpgraph_pie3d.php");

$data = array(4060213350);

$graph = new PieGraph(400200);
$graph->SetShadow();

$graph->title->SetFont(FF_BIG5FS_NORMAL);
$graph->legend->SetFont(FF_BIG5FS_NORMAL);
$graph->title->Set("銝剜?");
$p1 = new PiePlot3D($data);

$p1->SetSize(0.5);
$p1->SetCenter(0.45);
$p1->SetLegends(array("銝剜?","2","3","4","5"));
$graph->Add($p1);

$graph->Stroke();
?>


</body>
</html>

還是一樣出現
代碼: [選擇]
SetShadow(); $graph->title->SetFont(FF_BIG5, FS_NORMAL); $graph->legend->SetFont(FF_BIG5, FS_NORMAL); $graph->title->Set("中文"); $p1 = new PiePlot3D($data); $p1->SetSize(0.5); $p1->SetCenter(0.45); $p1->SetLegends(array("中文","2","3","4","5")); $graph->Add($p1); $graph->Stroke(); ?>
當我執行相同的程式碼但是不同副檔名(GDexample.php)時,出現下列錯誤訊息
Warning: include(jpgraph/jpgraph.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 10

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 10

Warning: include(jpgraph/jpgraph_pie.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 11

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph_pie.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 11

Warning: include(jpgraph/jpgraph_pie3d.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 12

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph_pie3d.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 12

Fatal error: Class 'PieGraph' not found in C:\AppServ\www\jpgraphtest\GDexample.php on line 16
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 15:14
先把<?php之前以及?>之後的東西全部拿掉...,副檔名改成php跑跑看。
主題: 回覆: jpgraph圖形無法呈現
作者: ricky2009-11-04 15:28
樓主...
請先確定你的apache有正確設定好會將.html的檔案當成php來執行。
不然就是請把GDexample.html 改成 GDexample.php

您可以先作個簡單的測試,建立一個test.html
用以下的內容去測試
引用
<?php
  echo "php已經正確執行!";
  die;
?>
你看到的是html版本,php沒有正確的執行!
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 15:59
高手~
我新增一個test.html, 並輸入下列程式


代碼: [選擇]
<?php
  
echo "php已經正確執行!";
  die;
?>

再以firefox 預覽時是空白的
主題: 回覆: jpgraph圖形無法呈現
作者: ricky2009-11-04 16:09
高手~
我新增一個test.html, 並輸入下列程式


代碼: [選擇]
<?php
  
echo "php已經正確執行!";
  die;
?>

再以firefox 預覽時是空白的

你還少了
引用
你看到的是html版本,php沒有正確的執行!

不過大概猜得到,你的apache設定有問題。
你的apache設定是把.html的檔案當成html顯示,而不是當成php程式去執行。
主題: 回覆: jpgraph圖形無法呈現
作者: Yamaka2009-11-04 16:14
再以firefox 預覽時是空白的

除非樓主知道怎麼設定讓 web server 以 php 來解析 html,
不然副檔名改用 .php 吧, 不要再自找麻煩了
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 16:17
但是即使用我.php執行,還是無法呈現jpgraph,誰救救我呀~~~~

Warning: include(jpgraph/jpgraph.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 10

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 10

Warning: include(jpgraph/jpgraph_pie.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 11

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph_pie.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 11

Warning: include(jpgraph/jpgraph_pie3d.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\jpgraphtest\GDexample.php on line 12

Warning: include() [function.include]: Failed opening 'jpgraph/jpgraph_pie3d.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\jpgraphtest\GDexample.php on line 12

Fatal error: Class 'PieGraph' not found in C:\AppServ\www\jpgraphtest\GDexample.php on line 16
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 16:18
為啥你堅持副檔名要用html咧...你的apache又不是這樣設定的

我做了範例:http://www.fillano.idv.tw/test533.php (http://www.fillano.idv.tw/test533.php)
他的原始碼:http://www.fillano.idv.tw/test533.phps (http://www.fillano.idv.tw/test533.phps)
如果副檔名改成html,就變成這樣:http://www.fillano.idv.tw/test533.html (http://www.fillano.idv.tw/test533.html)

三個檔案的內容是完全一樣的。如果不改設定,副檔名是php的,php才會處理他...所以你副檔名是html的,伺服器就直接把內容當作html傳過來了...就變成那樣的畫面。
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 16:21
另外的錯誤訊息,是找不到jpgraph的檔案阿...

再說一次,請把下載的jpgraph檔案解壓縮,裡面的src目錄改名為jpgraph,然後把這個目錄copy到include_path設定的目錄,依照你最後的錯誤訊息看起來,這個目錄應該是在C:\php5\pear。這應該是最快的改法了。
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 16:34
高手~
目前應該進了一大步了~

錯誤訊息已經變成
Jpgraph Error : 25049
Font file "c:\windows\fontsbkai00mp.ttf" is not readable or does not exist.


這是找不到字型檔嗎??在我的電腦找不到這個檔
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 16:41
你不是看著jaceju大大的部落格做的嗎?他前面有提到要改字型檔捏。
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 16:49
高手~~
在jaceju大大的部落格有提到如下:

[接著在更名後的 jpgraph 資料夾下,找到 jpg-config.inc 檔,修改以下的設定:

DEFINE('CHINESE_TTF_FONT', 'bkai00mp.ttf');

我個人偏好用新細明體,所以我改成:

DEFINE('CHINESE_TTF_FONT', 'mingliu.ttc');
 ]
但是我在jpg-config.inc.php中並沒有找到這一行 "DEFINE('CHINESE_TTF_FONT', 'bkai00mp.ttf');
"
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 16:50
新版改了,在jpgraph_ttf.inc.php
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 16:55
不過這種問題應該可以自己解得了,用搜尋工具找一下檔案內容就知道了。他不會憑空跑出bkai00mp.ttf這個檔案的,所以用這個檔名來搜尋jpgraph裡面的檔案,就知道有怎樣的變動。
主題: 回覆: jpgraph圖形無法呈現
作者: NARs2009-11-04 17:54
高手~
已經更改了字型在jpgraph_ttf.inc.php
 1.在jpgraph_ttf.inc.php
將DEFINE('CHINESE_TTF_FONT', 'bkai00mp.ttf');

改成:

DEFINE('CHINESE_TTF_FONT', 'mingliu.ttc');

並且也新增:
define("TTF_DIR","C:\WINDOWS\Fonts");
但是還是一樣錯誤,我又少做什麼了嗎????哀................
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 18:07
你多改了吧?我在windows下,不用動到TTF_DIR就會跑了阿?我只改了CHINESE_TTF_FONT喔。

其他要改,到LINUX底下再說吧。
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 19:15
不然你的TTF_DIR後面再加一個斜線。下班去...
主題: 回覆: jpgraph圖形無法呈現
作者: fillano2009-11-04 19:29
我的意思不是這樣...你也只差臨門一腳而已,加油吧。