PHP image()在本地工作,但在远程主机上无声地失败

时间:2015-04-22 01:18:29

标签: php image png gd

此脚本从文件中获取文件数据并创建一个图像,然后将其发送到浏览器,在我的本地服务器上运行完美但是当我远程上传时,它会无声地失败。我已将脚本缩减到以下内容,但仍然失败。我已经验证该文件存在,可读并且是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);
?>

1 个答案:

答案 0 :(得分:2)

  

为什么会这样?

这很可能是因为您在此处使用之前未实例化新的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);