php - 将上传的文件评估为false

时间:2017-01-25 14:45:49

标签: php amazon-web-services amazon-s3

我有一个php文件设置,用于通过AWS将图像上传到亚马逊服务器。我来了一个错误消息,奇怪的是出现在我的prod服务器(亚马逊服务器),但不是我的开发服务器(只是一个普通的PHP服务器)。亚马逊服务器之前已经抛出错误,当某些东西没有按照它想要的结构。例如,如果某个标记包含href /home,则会导致错误页面,除非我将标记更改为/home/

无论如何,我已经缩小了我的PHP脚本中的错误所在,我的php函数move_uploaded_file评估为false并停止我的文件开始上传到Amazon s3(在此阶段文件已打开托管站点但尚未在s3上的服务器)。这是我的if语句,上面声明了一些应该评估为true的变量:

$target_dir = "../uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],$target_file)) {
    //upload to s3
} else {
    //error
}

我在if语句上方插入了以下代码,以查看它是什么吐出来的,这是它在评论中评估的内容:

echo json_encode($target_file);
//     "..\/uploads\/Grad.jpeg"

   echo $_FILES["fileToUpload"]["tmp_name"];
    //    /tmp/phpQA1667

  echo json_encode(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],$target_file));
    //    false

我不是PHP专家,似乎无法把我的发现者放在为什么它评估为假。谁能看到我出错的地方?

1 个答案:

答案 0 :(得分:0)

move_uploaded_file在两种情况下返回false:

如果filename不是有效的上传文件,则不会执行任何操作,move_uploaded_file()将返回FALSE。

如果filename是有效的上传文件,但由于某种原因无法移动,则不会执行任何操作,move_uploaded_file()将返回FALSE。此外,还会发出警告。

无论哪种方式,您都应该在$ _FILES超全局中收到错误。

执行print_r($ _ FILES)并查看它给出的任何错误消息,以及是否填充了数组。

一旦发现错误,您就应该很容易确定问题的确切原因。

可在http://php.net/manual/en/features.file-upload.errors.php

找到错误的完整列表