我使用Apache 2在Ubuntu上运行PHP 5.2。
当我想从PHP文件中提供一个硬编码的PNG文件(使用$imgname
)时,我可以成功。但是,如果我将$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-
我会发疯,不知道为什么数据库版本不起作用。
也许问题是readfromdb有错误并生成警告,将这些警告打印到STDIO,向生成的图像添加垃圾,或者中止任何后续的标头(如内容类型)。您可能会检查服务器错误日志(无法添加任何样式"标头"的警告,因为已打印在文件..中),或者测试两个结果文件的大小是否相同。
我不知道你遇到这个问题的原因,但请使用readfile
直接用PHP输出文件的内容。