PHP image() 在本地工作但在远程主机上静默失败
PHP image() works locally but fails silently on remote host
这个脚本从一个文件中获取文件数据并创建一个图像,然后将它发送到浏览器,在我的本地服务器上它运行完美,但是当我远程上传它时,它默默地失败了。我已将脚本精简为以下内容,但它仍然失败。我已验证该文件存在、可读并且是 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);
?>
Why is this happening?
这很可能是因为您没有在此处使用新的 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);
这个脚本从一个文件中获取文件数据并创建一个图像,然后将它发送到浏览器,在我的本地服务器上它运行完美,但是当我远程上传它时,它默默地失败了。我已将脚本精简为以下内容,但它仍然失败。我已验证该文件存在、可读并且是 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);
?>
Why is this happening?
这很可能是因为您没有在此处使用新的 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);