PHP 取消设置不适用于在同一 PHP 脚本中上传的文件

PHP unset not working on files uploaded in same PHP script

我已经很多年没有遇到这个问题了,但这对我来说毫无意义...我上传了一个文件,然后将其移动到 AWS,然后我想删除本地文件。不过 unset() 不起作用。

首先,我只是按照我在所有类似情况下的方式来做:

$location =  $_FILES["file"]["tmp_name"];
$dest = $_SERVER['DOCUMENT_ROOT'].'/files/'.$filename;
move_uploaded_file($location,$dest);

//DO AWS UPLOAD STUFF//
//THEN,

if(file_exists($dest)){
   unset($dest);
}

然而,这并没有奏效。所以我什至尝试更改文件权限(644,更改为 755),因为无论如何我都会立即删除。刚刚添加

chmod($dest, 0755);

移动上传的文件后。在这两种情况下,它都不会删除文件。我错过了什么?

unset 只是删除内存引用。

如果您想删除 物理 文件,您需要 unlink()

因此您的代码将是

$location =  $_FILES["file"]["tmp_name"];
$dest = $_SERVER['DOCUMENT_ROOT'].'/files/'.$filename;
move_uploaded_file($location,$dest);

//DO AWS UPLOAD STUFF//
//THEN,

if(file_exists($dest)){
   unlink($dest);
}

虽然这看起来不对,因为您将移动文件然后删除刚刚移动的文件。

如果您想确认这是一个移动而不是一个副本,您需要更改为:

if(file_exists($dest) && file_exists($location)){
   unlink($location);
}