문제

I've been trying to figure out why unlink is not working. I've tried stackoverflow previous questions and answers but no luck. The exact filename that needs to be deleted is 'upload/test.png'. First I made a check if file exists.

$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
        }
    }
}
도움이 되었습니까?

해결책

Give the full path instead, like

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

Then try this,

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';
}

다른 팁

If you are saying that everything is ok and no permission issue then you can try this way too:

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

Try this and post what output you get (if any).

$filename = 'upload/test.png';

@unlink($filename);

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

I have found out that unlink is sensitive to encoding. I also had such kind of problem, but then I used:

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

and that worked for me.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top