Php 如何将文件上载到amazon EC2
我正在尝试从android向AmazonEC2上传文件。然而,每当我上传文件时,我都会收到一个意外的响应代码500错误。据我所知,这是因为用户没有将文件上载到数据库的正确权限?我知道问题在于AmazonEC2实例,而不是代码。但下面是我上传到服务器的php代码。首先,这是进入上传文件夹(/var/www/html/uploads)的正确方法吗?任何关于我如何使这项工作的帮助都将是非常好的Php 如何将文件上载到amazon EC2,php,amazon-web-services,amazon-ec2,Php,Amazon Web Services,Amazon Ec2,我正在尝试从android向AmazonEC2上传文件。然而,每当我上传文件时,我都会收到一个意外的响应代码500错误。据我所知,这是因为用户没有将文件上载到数据库的正确权限?我知道问题在于AmazonEC2实例,而不是代码。但下面是我上传到服务器的php代码。首先,这是进入上传文件夹(/var/www/html/uploads)的正确方法吗?任何关于我如何使这项工作的帮助都将是非常好的 <?php if(isset($_POST['image'])){ echo "in";
<?php
if(isset($_POST['image'])){
echo "in";
$image = $_POST['image'];
upload($_POST['image']);
exit;
}
else{
echo "image_not_in";
exit;
}
function upload($image){
$now = DateTime::createFromFormat('U.u', microtime(true));
$id = "pleeease";
$upload_folder = "/var/www/html/upload";
$path = "$upload_folder/$id.jpg";
if(file_put_contents($path, base64_decode($image)) != false){
echo "uploaded_success"
}
else{
echo "uploaded_failed";
}
}
?>
请注意以下几点:
首先,在提交到服务器之前,您应该确保使用enctypemultipart/formdata
从应用程序发送数据
其次,尝试此简化代码的变体:
if(isset($_FILES['image']))
{
$fileTmp = $_FILES['image']['tmp_name'];
$fileName = $_FILES['image']['name'];
move_uploaded_file($fileTmp, "/var/www/html/uploads/" . $fileName);
echo "Success";
}
else
{
echo "Error";
}
最后,假设您使用的是Apache,用户名是www data,则需要确保它可以写入上载文件夹:
sudo chown www-data:www-data /var/www/html/uploads
sudo chmod 755 /var/www/html/uploads
但当我尝试执行chown命令时,出现了一个错误,因为没有www数据用户。我对这个很陌生。。。www数据用户是否是试图从外部设备连接的用户?在许多Linux发行版上,www数据是运行Apache web服务器的用户。这意味着Apache(本例中的PHP脚本)所做的一切都是在该用户和组的权限下完成的。我假设您正在运行ApacheWeb服务器,如果没有,您在服务器上运行什么来处理来自Android应用程序的请求?