【问题标题】:PHP image() works locally but fails silently on remote hostPHP image() 在本地工作,但在远程主机上静默失败
【发布时间】:2015-06-29 10:21:13
【问题描述】:

此脚本从文件中获取文件数据并创建图像,然后将其发送到浏览器,在我的本地服务器上它运行良好,但是当我远程上传它时,它会静默失败。我已将脚本精简到以下内容,但仍然失败。我已验证该文件存在、可读并且是png 文件

为什么会这样?

<?php
    header('Content-Type: image/png');
    $image->data = file_get_contents('image.png');
    $image->image = imagecreatefromstring($image->data);
    imagepng($image->image);
    imagedestroy($image->image);
?>

【问题讨论】:

    标签: php image png gd


    【解决方案1】:

    为什么会这样?

    这很可能是因为您在此处使用之前没有实例化新的 stdClass 对象...

    $image->data = file_get_contents('image.png');
    $image->image = imagecreatefromstring($image->data);
    

    虽然这会起作用,但它会引发警告。您的本地服务器可能关闭了display_errors,而生产机器可能打开了display_errors。这会将警告添加到图像文本并导致图像失败。

    要解决这个问题,只需在第一次使用之前实例化一个新对象

    header('Content-Type: image/png');
    
    $image = new stdClass();  // this creates a new base object
    
    $image->data = file_get_contents('image.png');
    $image->image = imagecreatefromstring($image->data);
    imagepng($image->image);
    imagedestroy($image->image);
    

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多