尝试调用方法 imagerotate 时出现 500 内部服务器错误
Posted
技术标签:
【中文标题】尝试调用方法 imagerotate 时出现 500 内部服务器错误【英文标题】:500 Internal server error when trying to call method imagerotate 【发布时间】:2017-05-17 06:50:38 【问题描述】:我有一个可以在我们当前的 VPS 中完美运行的 php 脚本。但是当我在我们的新 VPS(亚马逊)中运行相同的脚本时,它会出现内部服务器错误。
这个脚本的工作是水平旋转图像。但不确定为什么它会给出内部服务器错误。此外,它没有在 apache 错误日志中记录任何内容。日志记录在 Apache 中打开。所以,我不知道是什么原因造成的。
以下是脚本及其在"$rotated = @imagerotate($dst_img, $angle, 0);"
行的失败
<?php
function RotateJpg($filename = '',$angle = 0,$savename = false)
header('Content-type: image/png');
$original = @imagecreatefrompng($filename);
$srcsize = @getimagesize($filename);
$dest_x = 2000;
$dest_y = (2000 / $srcsize[0]) * $srcsize[1];
$dst_img = @imagecreatetruecolor($dest_x, $dest_y);
@imagecopyresampled($dst_img, $original, 0, 0, 0, 0,$dest_x, $dest_y, $srcsize[0], $srcsize[1]);
@imagedestroy($original);
$rotated = @imagerotate($dst_img, $angle, 0);
@imagedestroy($dst_img);
if($savename == false)
header('Content-Type: image/png');
@imagepng($rotated);
else
@imagepng($rotated,$savename);
imagedestroy($rotated);
RotateJpg('source_file',90,'destination_file');
?>
非常感谢您的帮助。
问候,
已编辑
当我添加下面的代码时,它不会给我 500 内部服务器错误,而是给我 200 成功。但是它只是显示没有图像旋转的空白页面。
error_reporting(E_ALL);
ini_set('display_errors', 1);
我已验证服务器上启用了 GD。
【问题讨论】:
阅读您的错误日志。如果没有错误描述,您不会获得帮助。 只要你在每一个单独的函数调用中一直抑制错误,你就会毫无头绪...... 感谢您的回复@u_mulder。但是正如我在运行此脚本时所说的那样,错误没有记录在 apache error_log 中。但是,我已经检查了日志记录是否打开。请查看我编辑的问题。 @jeroen,您的意思是在我的代码中按 Thomas Dutrion 突出显示的 @ 抑制错误吗? 是的。您还应该确保除了图像文件之外没有任何输出发送到浏览器,因此您应该从删除结束 php 标记开始。您还应该删除函数顶部的header
调用,因为使用第三个参数时不会输出图像。
【参考方案1】:
您绝对应该从代码中删除所有 @
(它会禁用错误和警告)。
我的猜测是 GD 在服务器上没有激活。您应该尝试将 GD 添加到您的 php 中。
【讨论】:
我已经通过从代码中删除 @ 来测试它,但仍然是同样的问题。我还检查了服务器上是否启用了 GD。以上是关于尝试调用方法 imagerotate 时出现 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试在另一台服务器上调用 EJB 方法时出现 Websphere 错误
Android - 调用自定义 View 方法时出现空指针异常