PHP服务的图像总是损坏的

PHP服务的图像总是损坏的,php,apache,Php,Apache,每当我尝试使用PHP提供图像时,它都会声明图像已损坏/损坏,并在Google Chrome中发出以下警告: 解释为文档但使用MIME类型传输的资源 图像/png 但情况如下, 此脚本在多台服务器上运行良好,但在这台服务器上运行不好 我使用了多个图像和扩展 如果我将图像作为base64解码图像放入imgsrc中,它们的工作状态非常好 出于测试目的,我将它放在index.php的第一行,但它不起作用 我的文件不是UTF-8 BOM 我个人看不到任何令人惊讶的标题 我尝试过的例子: $imgpath

每当我尝试使用PHP提供图像时,它都会声明图像已损坏/损坏,并在Google Chrome中发出以下警告:

解释为文档但使用MIME类型传输的资源 图像/png

但情况如下,

  • 此脚本在多台服务器上运行良好,但在这台服务器上运行不好
  • 我使用了多个图像和扩展
  • 如果我将图像作为base64解码图像放入
    img
    src中,它们的工作状态非常好
  • 出于测试目的,我将它放在index.php的第一行,但它不起作用
  • 我的文件不是UTF-8 BOM
  • 我个人看不到任何令人惊讶的标题
  • 我尝试过的例子:

    $imgpath = 'assets/img/dropdown-arrow.png';
    $type      = pathinfo($imgpath, PATHINFO_EXTENSION);
    $data      = file_get_contents($imgpath);
    $base64    = 'data:image/' . $type . ';base64,' . base64_encode($data);
    header('Content-Type: image/png;'); // also tried with charset=UTF-8 and such
    echo base64_decode($base64);
    exit();
    
    示例2(在其他服务器上工作示例):

    ---所以,再一次;我已经把我的框架作为中间人删掉了,试图直接从index.php的第一行运行它

    因此,出于某种奇怪的原因,当我将
    内容类型设置为
    图像/png
    ;;一切都在走下坡路

    有人知道为什么会这样吗?这是我的代码遗漏的东西吗?是不是我的代码(服务器端)无法修复?我是不是错过了一些非常明显的东西


    基本服务器信息: 我使用PHP-FPM在Apache2.4.5上运行。(尽管切换到PHP-FASTCGI没有任何改变)在PHP7.2.3上


    响应标题: 连接:保持活动状态

    内容类型:图像/png

    日期:2018年7月13日星期五19:51:37 GMT

    保持活动状态:超时=5,最大=99

    服务器:Apache/2.4.25(Debian)

    传输编码:分块


    更新/修复
    显然,有人(不是我,真的!)在
    前面放了一个空格,你可以直接输出它,不需要进行base64_编码/解码

    $imgpath = 'assets/img/dropdown-arrow.png';
    $data    = file_get_contents($imgpath);
    header('Content-Type: image/png;');
    echo $data;
    exit();
    

    您可以直接输出,无需进行base64_编码/解码

    $imgpath = 'assets/img/dropdown-arrow.png';
    $data    = file_get_contents($imgpath);
    header('Content-Type: image/png;');
    echo $data;
    exit();
    

    在示例2中,标题表示数据是utf8编码的。 为什么? 您的数据是一个二进制文件
    并且没有utf8编码

    在示例2中,您的标题表示您的数据是utf8编码的。 为什么? 您的数据是一个二进制文件
    而且没有utf8编码

    在第一个示例中,您似乎在遵循img标签的说明。如果只是流式传输文件,就不会进行所有这些操作。只需设置标题内容类型并使用readfiles在第一个示例中,您似乎遵循了img标记的说明。如果只是流式传输文件,就不会进行所有这些操作。只需设置标题内容类型并使用readfileFor testing,my bad。这是对问题的一个很好的评论,但不是答案。对于测试,my bad。这是对问题的一个很好的评论,但不是答案。嗯。。。谢谢,这实际上直接在index.php中修复了它!但是,现在它仍然不能在框架的范围内工作。。。你知道我如何调试/找到导致这种情况的原因吗?没有打印任何内容,但是完全相同的功能不起作用。我已经关闭了框架使用的所有其他头函数和编码函数。您所说的“框架边界”是什么意思?你能不能更具体一些,比如,哪个框架,你是如何尝试使用这个镜像的?它是一个定制的框架,但只是一个传统的MVC。然而,我刚刚开始通过路由所采取的步骤复制粘贴图像,并刚刚发现从哪一刻开始,一切都出了问题。这个问题,我得自己解决。base64最终只是一个测试错误,但我会将你的答案标记为正确答案,因为我自己测试得很差。非常感谢。嗯。。。谢谢,这实际上直接在index.php中修复了它!但是,现在它仍然不能在框架的范围内工作。。。你知道我如何调试/找到导致这种情况的原因吗?没有打印任何内容,但是完全相同的功能不起作用。我已经关闭了框架使用的所有其他头函数和编码函数。您所说的“框架边界”是什么意思?你能不能更具体一些,比如,哪个框架,你是如何尝试使用这个镜像的?它是一个定制的框架,但只是一个传统的MVC。然而,我刚刚开始通过路由所采取的步骤复制粘贴图像,并刚刚发现从哪一刻开始,一切都出了问题。这个问题,我得自己解决。base64最终只是一个测试错误,但我会将你的答案标记为正确答案,因为我自己测试得很差。非常感谢。