fopen Permission denied on a file with 777 permissions

21,443

Solution 1

I think its possible that you have write/read permissions on the file but not on the folder. Try this in the public root of your website and see if you can read or write the file.

For safe mode (http://php.net/manual/en/function.fopen.php), php doc's say the following:

Note: When safe mode is enabled, PHP checks whether the directory in which the script is operating has the same UID (owner) as the script that is being executed.

Last you also need to be sure that php has access to the folder you are trying to write to.

Solution 2

I had same issue: folder was 777, but fopen does not worked. fopen said permission deny. Make sure your script have a 'good' permissions. maybe it will help you:

echo $dst, file_exists($dst) ? ' exists' : ' does not exist', "\n";
echo $dst, is_readable($dst) ? ' is readable' : ' is NOT readable', "\n";
echo $dst, is_writable($dst) ? ' is writable' : ' is NOT writable', "\n";
$fh = fopen($dst, 'w');
if ( !$fh ) {
    echo ' last error: ';
    var_dump(error_get_last());
}
Share:
21,443
personne3000
Author by

personne3000

Updated on January 17, 2020

Comments

  • personne3000
    personne3000 over 4 years

    Since the title of this post is pretty much self-explanatory, I'll just jump to the code :

    echo sprintf('%o', fileperms('test.txt'))."<br/>";
    
    fopen("test.txt", "w");
    

    And with this I get :

    100777
    fopen(test.txt): failed to open stream: Permission denied
    

    Any ideas ?

    Edit : Problem solved : there were access control lists on the server that were not configured correctly.

    Thanks !