从DB读取路径时PNG文件无效错误,但如果路径是硬编码则有效

时间:2012-04-02 15:28:01

标签: php mysql image-processing png imagemagick

我使用Apache 2在Ubuntu上运行PHP 5.2。

当我想从硬编码的PHP文件(使用$imgname)提供PNG文件时,我可以成功。但是,如果我将$imgname更改为$imgdbname,则浏览器会失败并说它不是有效的PNG文件。

$imgname = "cachepics/c3s9taopkp.png";
$imgdbname = readfromdb();

header("Content-type: image/png");
print file_get_contents($imgname);

但是,如果我评论header("Content-type: image/png");行,浏览器会在两种情况下显示所有PNG垃圾文本。因此,我确信PHP实例能够通过读取DB的路径来访问该文件。

的输出
print "-".$imgname."-".$imgdbname."-";

看起来完全一样。

-cachepics/c3s9taopkp.png-cachepics/c3s9taopkp.png-

我会发疯,不知道为什么db版本不起作用。

2 个答案:

答案 0 :(得分:2)

问题可能是readfromdb有错误并生成警告,将这些警告打印到STDIO,向生成的图像添加垃圾,或者中止任何后续标头(如内容类型)。 您可以检查服务器错误日志(无法添加样式'标题的任何警告,因为已经打印在文件中...'),或测试两个结果文件是否大小相同。

答案 1 :(得分:0)

我不知道您遇到此问题的原因,但请使用readfile直接在PHP中输出文件内容。