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

6
我在上传图片到S3时遇到了问题。我使用S3类和jqueryimageuploader插件来完成此操作。 我已经建立了基本应用程序,并且在我的本地机器上运行良好。但是,当我部署它到beanstalk时,它就开始抛出错误。我已经附上了控制台快照。 下面是我的代码参考:enter image description here 这是启动文件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 文件可以在这里找到。
我将添加由我修改的部分来上传至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 上却失败了。任何帮助都将不胜感激。谢谢关注。


2
你的错误日志显示了什么? - Lawrence Cherone
检查您的服务器错误日志。它会详细说明500错误(除非您是从亚马逊获取该500错误)。 - Marc B
我通过控制台配置了日志,但没有记录错误。 :( - KillABug
我已经在下面的注释中添加了日志信息。我无法找到任何问题! - KillABug
1个回答

4
HTTP 500错误意味着您的应用程序中有一些需要修复的“错误”(即:这是开发人员的错,而不是像404那样用户的错)。
要找出问题的确切原因(可能会有数千个生成HTTP 500的原因),您需要查看错误日志文件。如果使用标准的LAMP堆栈,则应该能够在此处找到错误日志:/var/log/apache2/error.log(但可能还有许多其他位置)。
我猜测您可能有一个文件权限问题。我猜测用户没有写入上传图像所在文件夹的权限,因此您需要将该文件夹设置为可写(在Linux中,只需键入:sudo chmod -R a+rwX /make/this/folder/something/writeable)。但这只是猜测,您需要先仔细检查错误日志文件。

我不确定是否是权限问题,因为我通过本地机器将文件上传到了同一个文件夹。我查看了日志,在亚马逊的日志中至少没有发现任何问题。我将查看Beanstalk日志文件并回复。 - KillABug
这是日志记录的内容:::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" - KillABug
说实话,这是开发人员的错误!:P 我配置了错误的路径,并且在上传到服务器后没有交叉检查。谢谢您的回复。 - KillABug
在我的情况下,问题是由于错误的数据库凭据导致的,这也导致了其他错误。修复登录细节解决了问题。谢谢。 - TheTechGuy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接