将上载的文件评估值移动为false



我有一个php文件设置,用于通过AWS将图像上传到亚马逊服务器。我收到了一条错误消息,奇怪的是,它出现在我的prod服务器(amazon服务器)上,而不是我的dev服务器(只是一个普通的php服务器)上。亚马逊服务器以前曾在某些内容的结构不完全符合其要求时抛出错误。例如,如果一个a标记有一个href/home,它将导致一个错误页面,除非我将标记更改为/home/

无论如何,我已经缩小了我的PHP脚本中错误所在的范围,我的PHP函数move_uploaded_file被评估为false,并阻止我的文件开始上传到Amazons3(在这个阶段,文件在托管网站的服务器上,但还没有在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专家,似乎无法让我的finder了解它为什么评估为false。有人看到我哪里错了吗?

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

相关内容

最新更新