PHP image()在本地工作,但在远程主机上以静默方式失败

PHP image()在本地工作,但在远程主机上以静默方式失败,php,image,png,gd,Php,Image,Png,Gd,这个脚本从一个文件中获取文件数据,创建一个图像,然后将其发送到浏览器,在我的本地服务器上运行良好,但当我远程上传它时,它会无声地失败。我已经将脚本精简为以下内容,但仍然失败。我已验证该文件是否存在,是否可读,是否为png文件 为什么会这样 <?php header('Content-Type: image/png'); $image->data = file_get_contents('image.png'); $image->image = image

这个脚本从一个文件中获取文件数据,创建一个图像,然后将其发送到浏览器,在我的本地服务器上运行良好,但当我远程上传它时,它会无声地失败。我已经将脚本精简为以下内容,但仍然失败。我已验证该文件是否存在,是否可读,是否为
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
    header('Content-Type: image/png');
    $image->data = file_get_contents('image.png');
    $image->image = imagecreatefromstring($image->data);
    imagepng($image->image);
    imagedestroy($image->image);
?>
这很可能是因为您在这里使用新的
stdClass
对象之前没有实例化它

$image->data = file_get_contents('image.png');
$image->image = imagecreatefromstring($image->data);
虽然这会起作用,但它会发出警告。本地服务器可能已关闭
display\u errors
,而生产机器可能已打开
display\u 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);