Search code examples
phpunlink

unlink cannot delete file


I'm frustrated about deleting file in ubuntu using PHP unlink().

I created a very simple simulation as follow:

  1. create a folder named "files" beneath /var/www with 766 permission.
  2. upload a file, let say "image.png" in that folder & set the permission into 666
  3. create a php file named delete.php, set the permission to 644 and upload to /var/www directory
  4. Call the file in browser (I use localhost)

The "image.png" still exists in "files" directory

Here is the php script of delete.php :

$filename = 'image.png';
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . $filename;
unlink($file);

I also tried the following script :

$filename = 'image.png';
$dir = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'files';
chdir($dir);
unlink($filename);

But still can't delete the file.


Solution

  • The folder/owner of the directory could be a different user than the user being used to run php.

    You should create a folder with the user php assigned. If you cannot do that yourself ask your ISP to do it. That is how I solved a similar problem.

    One user cannot delete files of another user on a unix system. If you would set it to 777 then you could delete it...