【问题标题】:500 Internal server error when trying to call method imagerotate尝试调用方法 imagerotate 时出现 500 内部服务器错误
【发布时间】: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 调用,因为使用第三个参数时不会输出图像。

标签: php apache amazon-ec2 centos7 httpd.conf


【解决方案1】:

您绝对应该从代码中删除所有 @(它会禁用错误和警告)。

我的猜测是 GD 在服务器上没有激活。您应该尝试将 GD 添加到您的 php 中。

【讨论】:

  • 我已经通过从代码中删除 @ 来测试它,但仍然是同样的问题。我还检查了服务器上是否启用了 GD。
猜你喜欢
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多