0

我正在尝试将一个 PHP 文件包含在另一个创建 jpGraph 图像的 PHP 文件中

(原因是我正在为图表加载 mySQL 数据,并且我想将登录凭据放入单独的文件中)

我知道图表已创建(因为创建了正确的图像文件)但图表未显示在网页中。

这是一个简化的代码示例:

登录.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);

?>

该文件显示正确的图表,但网页 accbarex1.html 显示损坏的图像。如果我注释掉该行

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

然后两者都工作。

为什么?在这种情况下如何包含文件?

2013 年 5 月 13 日编辑

鉴于包含行处于活动状态。这有帮助(文件和嵌入式图表都有效)

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

这没有帮助(只有文件有效,嵌入图表无效)

  • 使用包含文件的绝对路径
  • ./login.inc.php 包含行 bla // PHP 错误
  • ./login.inc.php 包含 $i=1; 行 // 没有 PHP 错误,没有 PHP 标签

2013 年 5 月 14 日编辑

一些轻微的进步:Firefox 显示相同的行为,但至少我收到一条错误消息。错误控制台说:

图像损坏或截断:http:// .. acbarex1.php

4

1 回答 1

1

我发现了问题所在。结束后我有额外的字符?>,但我看不到它们,因为它们是空格和换行符。这些字符弄乱了 jpGraph 图像。

前:

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

后:

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

那解决了它!当心多余的字符!

于 2013-05-16T02:33:30.827 回答