2013-05-13 77 views
0

我想包括在創建jpgraph的圖像另一個PHP文件中的一個PHP文件jpgraph的不能包含PHP文件

(原因是,我加載MySQL的數據圖表,我希望把登錄證書到一個單獨的文件)

我知道圖表已創建(因爲創建了正確的圖像文件),但圖表不顯示在網頁中。

下面是一個簡化的代碼例如:

login.inc.php

<?php 
    $lhostname="localhost"; 
    $lusername="joeschmack"; 
    $lpassword="autumnleaf"; 
    $ldatabase="customers"; 
    ?> 

accbarex1.html

<html> 
    <head> 

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> 
    <title></title> 
    </head> 
    <body> 
    <h3>This is where I want to display my graph</h3> 
    <img src="accbarex1.php"> 
    </body> 
</html> 

accbarex1.php

<?php // content="text/plain; charset=utf-8" 

require_once ('../../../lib/jpgraph/jpgraph.php'); 
require_once ('../../../lib/jpgraph/jpgraph_bar.php'); 
include("./login.inc.php"); 


$data1y=array(-8,8,9,3,5,6); 
$data2y=array(18,2,1,7,5,4); 

// Create the graph. These two calls are always required 
$graph = new Graph(500,400); 
$graph->SetScale("textlin"); 

$graph->SetShadow(); 
$graph->img->SetMargin(40,30,20,40); 

// Create the bar plots 
$b1plot = new BarPlot($data1y); 
$b1plot->SetFillColor("orange"); 
$b1plot->value->Show(); 
$b2plot = new BarPlot($data2y); 
$b2plot->SetFillColor("blue"); 
$b2plot->value->Show(); 

// Create the grouped bar plot 
$gbplot = new AccBarPlot(array($b1plot,$b2plot)); 

// ...and add it to the graPH 
$graph->Add($gbplot); 

$graph->title->Set("Accumulated bar plots"); 
$graph->xaxis->title->Set("X-title"); 
$graph->yaxis->title->Set("Y-title"); 

//$graph->title->SetFont(FF_FONT1,FS_BOLD); 
//$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD); 
//$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD); 

// Display the graph 
$graph->Stroke(); 

//save to file 
$fileName = "/tmp/imagefile.png"; 
$graph->img->Stream($fileName); 

?> 

的文件顯示正確的cha rt,但網頁accbarex1.html顯示一張破碎的圖像。 如果我註釋掉這一行

include("./login.inc.php"); 

然後雙方都有效。

爲什麼?我該如何在這種情況下包含一個文件?

編輯 2013年5月13日:

鑑於包括線是有效的。 這有助於(包括文件和嵌入圖表工作)

  • ./login.inc.php不存在
  • ./login.inc.php是空

這不利於(只有文件的工作,嵌入圖表不工作)

  • 使用絕對路徑,包括文件
  • ./login.inc.php包含線 bla // PHP error
  • ./login.inc.php包含行$ i = 1; //沒有PHP的錯誤,沒有PHP標籤

編輯 2013年5月14日:

一些輕微的進步:火狐顯示了相同的行爲,但至少我得到一個錯誤信息。錯誤控制檯說:

圖片損壞或截斷:HTTP:// .. acbarex1.php

+0

檢查您的錯誤日誌並嘗試使用絕對鏈接(/home/user/public_html/login.inc.php)而不是相對的鏈接。 – aynber 2013-05-13 20:33:44

+0

要解決這個問題,請註釋掉最後一行('$ graph-> img-> Stream($ fileName);')並直接執行accbarex1.php以查看include(「./ login」)生成的輸出。 inc.php「)'或腳本的其他部分。 – 2013-05-13 20:35:51

+0

絕對路徑:無變化。 – atmelino 2013-05-13 21:28:56

回答

1

我發現了什麼問題。在關閉之後我還有額外的字符?>,但由於它們是空格和換行符,我看不到它們。這些字符混淆了jpGraph圖像。

前:

<?php 
    $lhostname="localhost"; 
    $lusername="joeschmack"; 
    $lpassword="autumnleaf"; 
    $ldatabase="customers"; 
    ?><SPACE><SPACE><NEWLINE> 

後:

<?php 
    $lhostname="localhost"; 
    $lusername="joeschmack"; 
    $lpassword="autumnleaf"; 
    $ldatabase="customers"; 
    ?> 

問題解決了!小心多餘的角色!