PHP:即使文件存在且可写,取消链接也无法删除文件

问题描述 投票:0回答:5

我一直在试图找出为什么

unlink
不起作用。我已经尝试过 stackoverflow 之前的问题和答案,但没有运气。需要删除的确切文件名是
'upload/test.png'
。 首先我检查文件是否存在。

$filename = 'upload/test.png';
if(file_exists($filename)){
// file_exists returns true
    if(is_writable($filename)){
        // is_writable also returns true
        if(unlink($filename)){
            echo 'file deleted';
        }
        else{
            echo 'cant delete file';
            print_r(error_get_last());
            // this gives me
            // unlink() function.unlink: No such file or directory
        }
    }
}
php unlink
5个回答
6
投票

请提供完整路径,例如

$filename = dirname(__FILE__) . '/upload/test.png';

那就试试这个吧,

if (is_file($filename)) {

   chmod($filename, 0777);

   if (unlink($filename)) {
      echo 'File deleted';
   } else {
      echo 'Cannot remove that file';
   }

} else {
  echo 'File does not exist';
}

2
投票

如果你说一切正常并且没有权限问题那么你也可以尝试这种方式:

unlink(realpath("upload/test.png"));

0
投票

尝试此操作并发布您得到的输出(如果有)。

$filename = 'upload/test.png';

@unlink($filename);

if(is_file($filename)) {
   echo "file was locked (or permissions error)";
}

0
投票

我发现 unlink 对编码敏感。我也遇到过这样的问题,但后来我用了:

$filename= iconv("UTF-8", "Windows-1251", $filename);

这对我有用。


0
投票

我试图使用我的 php 脚本来修改脚本运行所在子目录中的文件。当我尝试删除该文件时,这是不可能的。然而,当我将它移动到文件系统的完全不同的部分时,它起作用了。看起来像是 php (8.1) 的安全功能。

© www.soinside.com 2019 - 2024. All rights reserved.