Hướng dẫn php unlink permission denied

I have two files: b.php and test.txt

<?php 
$b = "test.txt";
unlink($b);
?>

and the error is: Warning: unlink(test.txt) [function.unlink]: Permission denied

why? b.php and test.txt is 777 and the same group/login

if I set 777 on the parent directory I can execute unlink but i have to set 777 and back to 755?

asked Nov 27, 2012 at 23:10

9

You (as in the process that runs b.php, either you through CLI or a webserver) need write access to the directory in which the files are located. You are updating the directory content, so access to the file is not enough.

Note that if you use the PHP chmod() function to set the mode of a file or folder to 777 you should use 0777 to make sure the number is correctly interpreted as an octal number.

answered Nov 27, 2012 at 23:26

ArjanArjan

9,5581 gold badge30 silver badges40 bronze badges

1

You'll first require to close the file using fclose($handle); it's not deleting because the file is in use. So first close the file and then try.

answered Apr 24, 2014 at 4:24

Hướng dẫn php unlink permission denied

Ashwani PathakAshwani Pathak

4811 gold badge4 silver badges14 bronze badges

0

in addition to all the answers that other friends have , if somebody who is looking this post is looking for a way to delete a "Folder" not a "file" , should take care that Folders must delete by php rmdir() function and if u want to delete a "Folder" by unlink() , u will encounter with a wrong Warning message that says "permission denied"

however u can make folders & files by mkdir() but the way u delete folders (rmdir()) is different from the way you delete files(unlink())

eventually as a fact:

in many programming languages, any permission related error may not directly means an actual permission issue

for example, if you want to readSync a file that doesn't exist with node fs module you will encounter a wrong EPERM error

answered Mar 7, 2018 at 11:04

Hướng dẫn php unlink permission denied

// Path relative to where the php file is or absolute server path
chdir($FilePath); // Comment this out if you are on the same folder
chown($FileName,465); //Insert an Invalid UserId to set to Nobody Owner; for instance 465
$do = unlink($FileName);

if($do=="1"){ 
    echo "The file was deleted successfully."; 
} else { echo "There was an error trying to delete the file."; } 

Try this. Hope it helps.

answered Nov 27, 2012 at 23:33

ArdiArdi

3182 silver badges4 bronze badges

2

The file permission is okay (0777) but i think your on the shared server, so to delete your file correctly use; 1. create a correct path to your file

// delete from folder
$filename = 'test.txt';
$ifile = '/newy/made/link/uploads/'. $filename; // this is the actual path to the file you want to delete.
unlink($_SERVER['DOCUMENT_ROOT'] .$ifile); // use server document root
// your file will be removed from the folder

That small code will do the magic and remove any selected file you want from any folder provided the actual file path is collect.

answered Jun 2, 2017 at 15:02

DeanDean

3632 silver badges12 bronze badges

In Windows and before PHP version 7.3.0, check that your file has been closed before unlinking it,
as said in https://www.php.net/manual/en/function.unlink.php :

On Windows, it is now possible to unlink() files with handles in use, while formerly that would fail. However, it is still not possible to re-create the unlinked file, until all handles to it have been closed.

As an exemple :

$fullFilePath = 'C:\Users\MyUserName\www\myApp\public\test.txt';
$handle = fopen($fullFilePath , 'w+');

fopen($filePath, 'w+');
fputs($handle, 'Some text in the file');
fclose($handle);

unlink(realpath($insertedLinesFilePath));

answered Aug 12 at 13:32