Php 如何将文件上载到amazon EC2

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";

我正在尝试从android向AmazonEC2上传文件。然而,每当我上传文件时,我都会收到一个意外的响应代码500错误。据我所知,这是因为用户没有将文件上载到数据库的正确权限?我知道问题在于AmazonEC2实例,而不是代码。但下面是我上传到服务器的php代码。首先,这是进入上传文件夹(/var/www/html/uploads)的正确方法吗?任何关于我如何使这项工作的帮助都将是非常好的

<?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";
    }
}

?>

请注意以下几点:

首先,在提交到服务器之前,您应该确保使用enctype
multipart/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应用程序的请求?