fopen Creates File, But how to change permissions?

Arjun Bajaj picture Arjun Bajaj · Dec 28, 2011 · Viewed 31.3k times · Source

I am creating a new file using fopen.

$filename = 'user_data/10.xml';
$openhandle = fopen($filename, 'w+');

Then I check if the file has been created using: file_exists() function.

The problem is: The file is being created with some owner, probably the folder name, but its not me. Also the permissions of the file is only readable by the owner. And since I am not the owner, I can't read the file, or change the permissions.

But If attempt to change it using:

chown($filename, 'myusername');
chmod($filename, 777);

I tried changing the file owner and permissions using the Terminal using sudo. That worked properly. So I also tried using the functions above with shell_exec() so it runs in root.

But had no luck.

Although, I don't have much experience with file permission numbers, the chown command is also not working.

So how should I change the owner and permissions of the file so i'm the owner and its readable and writable by my other PHP scripts?

Answer

Tim Wickstrom picture Tim Wickstrom · Dec 28, 2011

You should be able to chmod it using only the following line:

chmod($filename, 0777);

Note the 0 before the 777.

Also do not change the ownership before it has been chmod'ed