我使用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版本不起作用。
答案 0 :(得分:2)
问题可能是readfromdb有错误并生成警告,将这些警告打印到STDIO,向生成的图像添加垃圾,或者中止任何后续标头(如内容类型)。 您可以检查服务器错误日志(无法添加样式'标题的任何警告,因为已经打印在文件中...'),或测试两个结果文件是否大小相同。
答案 1 :(得分:0)
我不知道您遇到此问题的原因,但请使用readfile
直接在PHP中输出文件内容。