将图像上传到 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(内部服务器错误)当我尝试上传图像时发生此错误
上传Multipart swift Image Upload内部服务器错误500作为响应
Laravel 图片上传使用 ajax 500 内部服务器错误