php include for images解析图像,好像它是php代码并给出语法错误

时间:2012-12-20 13:15:20

标签: php image parsing web gd

我创建了一个脚本来调整图像大小,并在<img>标记中动态插入,如:

<img src="includes/thumb.php?src=<?=$filename;?>&w=389&q=100&f=jpg" />

在thumb.php中,我使用php gd函数调整图像大小,最后调整include,以便显示调整了图像的大小调整后的图像,其中在<img>标记内调用了thumb.php。 / p>

这是我如何包含thumb.php中的图像:

//header('Content-Type: image/' . $format);
//header('Content-Disposition: inline;');
include $resized_image; // which is now resized and saved

然而,它并不总是适用于所有图像,有时我会收到消息:

Parse error: syntax error, unexpected ']' in xxxxx\thumbs\
e58b3c96d4f2ccc298d68cbac7cd97a0.jpg on line 326

因此可以看出,当我尝试include时,解析错误会出现在新调整大小的图像中。但是当我通过双击直接打开图像时,它显示正常并且是有效的图像。

任何人都可以告诉我为什么PHP正在像PHP代码一样解析图像文件,我想避免这种情况而是显示图像?

我想做的只是显示如下调整大小的图像:

<img src="includes/thumb.php?src=<?=$filename;?>&w=389&q=100&f=jpg" />

4 个答案:

答案 0 :(得分:1)

要将文件发送到浏览器,您需要使用readfile($resized_image),因为include $resized_image会尝试将文件解析为PHP脚本,这实际上非常危险!

另请参阅:readfile()

答案 1 :(得分:1)

请改用readfile()include是错误的工具,也可能导致安全问题。

答案 2 :(得分:1)

使用php将图像发送到浏览器我会这样做:

header("Content-Type: image/jpeg");
try
{
    $image = fopen('imagepath', "rb");
}
catch (Exception $e)
{
    //foobar
}
fpassthru($image);
fclose($image);
exit();

答案 3 :(得分:0)

我认为应该更像 - &gt; echo $ resized_image;在thumb.php中