12

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?

BenMorel
  • 30,280
  • 40
  • 163
  • 285
Arjun Bajaj
  • 1,822
  • 7
  • 23
  • 40
  • When the file is uploaded (before any chmod), what are the permissions on the file, what are the permissions on user_data folder, and who is the assigned owner? – Ben D Dec 28 '11 at 20:18
  • I create a new empty file, and then write to it using fwrite(). The permissions on the file are: Owner and Group: www-data Owner: read Group: execute Others: execute On the user_data folder, I'm the owner and all the three people are set to Read, Write, Execute... – Arjun Bajaj Dec 28 '11 at 20:23
  • As TimWickstrong says, you should add a leading 0 to the chmod command, but it also occurs that you may not have permission to chmod. Try $chmoded = chmod($filename,0777); if (!$chmoded){echo "Could not change the file permissions";}... also, if the file permissions are 777 there is no need to chown. – Ben D Dec 28 '11 at 20:26

1 Answers1

19

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

Pang
  • 8,605
  • 144
  • 77
  • 113
Tim Wickstrom
  • 4,396
  • 2
  • 18
  • 31