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);
}
我已经很多年没有遇到这个问题了,但这对我来说毫无意义...我上传了一个文件,然后将其移动到 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);
}