I am using file_put_contents
to create a file. My php process is running in a group with permissions to write to the directory. When file_put_contents
is called, however, the resulting file does not have group write permissions (it creates just fine the first time). This means that if I try to overwrite the file it fails because of a lack of permissions.
Is there a way to create the file with group write permissions?
For example, the value 644 sets read and write permissions for owner, and read-only permissions for group and other.
The file_put_contents() writes data to a file. This function follows these rules when accessing a file: If FILE_USE_INCLUDE_PATH is set, check the include path for a copy of filename. Create the file if it does not exist. Open the file.
Example 1 (set file-permissions to read-write for owner and group, and read for others):
file_put_contents($filename, $data); chmod($filename, 0664);
Example 2 (make file writable by group without changing other permissions):
file_put_contents($filename, $data); chmod($filename, fileperms($filename) | 16);
Example 3 (make file writable by everyone without changing other permissions):
file_put_contents($filename, $data); chmod($filename, fileperms($filename) | 128 + 16 + 2);
128, 16, 2 are for writable for owner, group and other respectively.
You might what to try setting the umask
before calling file_put_contents
: it will change the default permissions that will be given to the file when it's created.
The other way (better, according to the documentation) is to use chmod
to change the permissions, just after the file has been created.
Well, after re-reading the question, I hope I understood it well...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With