【发布时间】: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