将图像上传到 S3 时遇到内部服务器错误 500

Posted

技术标签:

【中文标题】将图像上传到 S3 时遇到内部服务器错误 500【英文标题】:Encountering Internal server error 500 while uploading images to S3 【发布时间】:2013-07-06 01:26:37 【问题描述】:

我在将图像上传到 S3 时遇到问题。我正在使用 S3 类和 jqueryimageuploader 插件。 我已经设置了基本应用程序,它在我的本地机器上运行良好。当我将它部署在 beanstalk 上时,它开始抛出错误。我已经附上了控制台快照。 我在这里添加我的代码以供参考。 这是启动文件 index.html -

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>jQuery File Upload Example</title>
</head>
<body>
<input id="fileupload" type="file" name="files[]"   data-url="http://mydomain.elasticbeanstalk.com/server/php/index.php" multiple>
<script src="js/jquery.min.js"></script>
<script src="js/vendor/jquery.ui.widget.js"></script>
<script src="js/jquery.iframe-transport.js"></script>
<script src="js/jquery.fileupload.js"></script>
<script>
$(function () 
$('#fileupload').fileupload(
    dataType: 'json',
    done: function (e, data) 
        $.each(data.result.files, function (index, file) 
            $('<p/>').text(file.name).appendTo(document.body);
        );
    
);
$('#fileupload').fileupload(
/* ... */
 progressall: function (e, data) 
    var progress = parseInt(data.loaded / data.total * 100, 10);
    $('#progress .bar').css(
        'width',
        progress + '%'
    );
  
 );
);

</script>
<style>
.bar 
  height: 18px;
  background: green;

我的 index.php --> 这是在文件上传点击时调用的

<?php
 error_reporting(E_ALL | E_STRICT);
 require('UploadHandler.php');
 $upload_handler = new UploadHandler();

?>

uploadHandler.php文件可以找到here 我将添加我修改的部分以上传到 S3

$bucket = "my bucket nmae";
$s3 = new S3(awsAccessKey, awsSecretKey);
$response = $s3->putObjectFile($file_path,$bucket,$file->name,S3::ACL_PUBLIC_READ);
$thumbResponse = $s3->putObjectFile('files/thumbnail/'.$file->name,$bucket,'images  /'.$file->name,S3::ACL_PUBLIC_READ);
echo $response;
echo $thumbResponse;
if ($response==1) 
 echo 'HERER enter!!';
   else 
      $file->error = "<strong>Something went wrong while uploading your    file... sorry.</strong>";
 

我没有上传太 文件,它在我的本地机器上运行良好,但在 beanstalk 上失败。任何帮助都会很棒。感谢您的关注。

【问题讨论】:

你的错误日志说什么? 检查服务器的错误日志。它将包含有关 500 的更多详细信息(除非您从亚马逊获得 500)。 我通过控制台配置了日志,但没有记录错误。 :( 我已经在下面的 cmets 中添加了日志信息。我在那里找不到问题! 【参考方案1】:

HTTP 500 错误意味着您的应用程序中存在需要修复的“错误”(即:这是开发人员的错,而不是像 404 这样的用户的错)

要准确找出问题所在(老实说,产生 HTTP 500 的原因可能有 1000 多种),您需要查看错误日志文件。如果它使用标准 LAMP 堆栈,您应该能够在此处找到此错误日志:/var/log/apache2/error.log(但可能还有许多其他位置)

我的猜测是您有文件权限问题。我猜用户对您尝试将图像上传到的文件夹没有写访问权限,在这种情况下,您需要使该文件夹可写(在 Linux 中只需键入: sudo chmod -R a+rwX /制作/这个/文件夹/东西/可写)。但这只是一个猜测,您需要先仔细检查您的错误日志文件。

【讨论】:

我不确定是否是权限问题,因为我通过本地计算机将文件上传到同一个文件夹。我查看了日志,亚马逊日志中至少没有任何内容。我会查看beanstalk 日志文件并恢复 这就是日志所说的::1 - - [08/Jul/2013:03:10:01 +0000] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.4.3 (Amazon) (internal dummy connection)" 10.164.47.96 - - [08/Jul/2013:03:10:52 +0000] "-" 408 - "-" "-" ``10.164.47.96 - - [08/Jul/2013:14:27:50 +0000] "GET / HTTP/1.1" 403 202 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36" 10.164.47.96 - - [08/Jul/2013:14:27:50 +0000] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36" 老实说,这是开发人员的错! :P 路径配置错误,上传到服务器后没有交叉检查。谢谢回复。 +1 在我的情况下,这是不正确的数据库凭据,这也导致了其他错误。修复登录详细信息解决了问题。谢谢

以上是关于将图像上传到 S3 时遇到内部服务器错误 500的主要内容,如果未能解决你的问题,请参考以下文章

加载资源失败:服务器响应状态为 500(内部服务器错误)当我尝试上传图像时发生此错误

将画布图像上传到 S3 服务器

上传Multipart swift Image Upload内部服务器错误500作为响应

Laravel 图片上传使用 ajax 500 内部服务器错误

AWS API Gateway - Lambda - 内部服务器错误

Node.js S3 上传器问题