【问题标题】:PHP cannot output imagesPHP无法输出图像
【发布时间】:2014-02-06 08:57:36
【问题描述】:
<?php
  ob_clean();
  header('Content-Type: image/jpeg');
  header('Content-Length: ' . filesize($file));
  $file = '111111-11111.jpg';
  $handle = fopen($file, "r");
  echo file_get_contents($file);
?>

在某一时刻,我的 php 网页停止显示我已成功上传到 MySQL 数据库的所有图像。我想深入了解这个问题的根源,看看它是否可以输出存储在 HDD 上的 .jpg 图像,而我得到的输出与我尝试从数据库访问此图像时的输出相同:

图像 [...] 无法显示,因为它包含错误。

图像位置正确,标头前没有空格,输出缓冲区已清理。我花了几天时间在谷歌上寻找答案,但没有运气。

我对 PHP 很陌生,所以如果你能提供帮助,请尽可能描述性,以便我能理解。 提前谢谢你。

【问题讨论】:

  • 您是否检查了 error_log 是否有任何 PHP 错误,可能是基于权限的?此外,您不需要 $handle = ... 行,因为您没有使用它
  • 检查页面的原始输出。流中可能有一些错误。使用ini_set('display_errors', 0); 禁用它。
  • 另外,在使用file_get_contents()之前,您不需要fopen()文件。

标签: php image output


【解决方案1】:

确保您尝试输出的文件位于正确的路径中(来自代码,与 PHP 脚本相同)并且您拥有该文件的读取权限。

$file = '111111-11111.jpg';
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
readfile($file);

【讨论】:

  • 注意:指令的顺序要改了,这个看起来更好(文件大小计算在设置文件路径之前完成)
  • 试过你建议的代码,它仍然给我同样的错误。该文件确实存在,名称相同,并且我确实拥有必要的权限,但它仍然没有给我任何东西。
  • 图像[...] 无法显示,因为它包含错误。
  • 尝试另一张图片并告诉我。
  • @Napolux 好的,所以也许我很笨......只是试图打开 Windows 的示例 .jpg 图片,它工作。这给我留下了一个问题 - 为什么当我将这张图片放入数据库后显示它时会出现错误?
猜你喜欢
  • 2021-07-03
  • 2011-04-11
  • 1970-01-01
  • 2016-09-08
  • 2012-05-03
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多