[英]Zend Framework: PHP script in img src tag causing broken image
我在版本1.11的Zend Framework项目中使用JpGraph库。 我试图通过在src
字段中包含一个php脚本来使用img
标签显示某些数据的图形,如下所示:
echo "<img src='vgraph.php?param1=val1¶m2=val2...
当我这样做时,唯一显示为图像的是我的浏览器的默认损坏图像。 由于Zend中的典型URL被视为控制器动作对,因此我所包含的文件路径也被视为控制器动作对。 为了调查为什么我没有得到我的图像,我在浏览器中查看了页面的来源。 当我单击上面的img
标签的链接时,我被定向到包含错误的页面:
Invalid controller specified (vgraph.php)
我决不打算将脚本用作控制器。 仅应显示图形图像。 我不确定如何确保Zend仅使用文件的输出作为图像,而不使用其路径作为URL。
这是我用于图像的文件vgraph.php
:
<?php
/* graph the vital data */
require_once( 'path/to/Zend/project/web/library/jpgraph/jpgraph.php' );
require_once( 'path/to/Zend/project/web/library/jpgraph/jpgraph_line.php' );
/* get the needed parameters */
$id = $_GET['param1'];
$type = $_GET['param2'];
$from = $_GET['param3'];
$to = $_GET['param4'];
$graph = new Graph( $width, $height );
/* create the data and plot */
$obj = new CcFunc_VitalSigns();
$vitals = $obj->getVitalData( $id, $type, $from, $to );
/* configure everything */
$graph->setScale( 'intint' );
$graph->title->Set( "Graph of " . $type );
$graph->xaxis->title->Set( "X-Axis" );
$graph->yaxis->title->Set( "Numerical Value" );
$lp = new LinePlot( $vitals );
$lp->setColor( 'blue' );
$lp->setWeight( 5 );
/* add the plot to the graph */
$graph->Add( $lp );
/* display the graph */
$graph->Stroke();
file, but I was met with the same problem, even after adding a RewriteRule
to apache to prevent redirection of .png
files. 注:我已经尝试过其他解决方案,比如图形流传输到png
文件,并让src
场文件的URL,但我遇到了同样的问题,甚至添加后RewriteRule
给了Apache,防止重定向.png
文件。 我已经将此方法确定为最舒适(潜在)的解决方案。
a controller, and is actually located in path/to/Zend/roject/web/application/scripts/views
. 编辑:我以前没有说过,但是回显img
标签的代码控制器,并且实际上位于path/to/Zend/roject/web/application/scripts/views
。 脚本vgraph.php
位于path/to/Zend/project/web/library
。
您需要将vgraph.php文件移动到您的公用文件夹中,才能正常工作,浏览器无法查看该文件之外的文件。
将其移动到path/to/Zend/project/web/public/vgraph.php
,将img标记更改为<img src="/vgraph.php?param1=val1¶m2=val2...
然后一切都会按预期进行。
链接时,请尝试在视图中将完整路径指定为:
<?php echo $this->baseURL();?>
这将返回localhos / [APP] /
希望这可以帮助
尝试将所有内容放在generateAction方法内的Graph控制器中,您可以链接到它:
<a href="<?php echo $this->baseURL();?>/graph/generate/?param1=val1¶m2=val2...">Generate</a>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.