【问题标题】:PNG file is not valid error when reading path from DB but works if the path is hardcoded从 DB 读取路径时,PNG 文件无效错误,但如果路径是硬编码的,则有效
【发布时间】:2012-04-16 06:36:00
【问题描述】:

我在 Ubuntu 上使用 Apache 2 运行 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版本不起作用。

【问题讨论】:

  • readfromdb 函数是什么样的?它是返回字符串还是回显它?
  • 它读取数据库并返回路径。 $imgdbname = $imgname = cachepics/c3s9taopkp.png
  • 如果在$imgname$imgdbname 中都存储了相同的字符串,那么它应该可以工作。尝试var_dump($imgname); var_dump($imgdbname); 之类的方法来验证它们是否完全相同。

标签: php mysql image-processing png imagemagick


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    不知道你遇到这个问题的原因,但是请用readfile直接在PHP中输出一个文件的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2023-03-04
      相关资源
      最近更新 更多