|
chown
Changes file owner
(PHP 4, PHP 5)
Attempts to change the owner of the file filename to user user. Only the superuser may change the owner of a file. Notes
Note:
This function will not work on remote files as the file to be examined must be accessible via the servers filesystem.
Note:
When safe mode is enabled, PHP checks whether the files or directories you are about to operate on have the same UID (owner) as the script that is being executed.
See Also
Code Examples / Notes » chowntayfun bilsel
Simple usage of the chown: <?php $file_name= "test"; $path = "/var/www/html/test/" . $file_name ; $user_name = "root"; chown($path, $user_name); ?> klaus zierer
If you want to chown a symlink, PHP will follow the symlink and change the target file. If you want to chown the symlink, you have to use shell_exec("/bin/chown user.group symlink"); njs+php
If you allow sudo execution for chmod by "nobody" (www, webdaemon, httpd, whatever user php is running under)in this manner, it had better be a system on which the owner is able to be root and no one else can run code, else your whole system is compromised. Someone could change the mode of /etc/passwd or the shadow password file. Other system commands (sudo mount) and so forth are similar. martijn
If chown is filled with a variable ( chown ("myfile", $uid) the uid will be looked up through pwget_uid. So if you need to set a non existing uid use inval($uid). jens vieler
for some reason i was searching for chown() with an "on this mashine"-unknown userid and found martijn's hint very interesting. the main problem is, that if the numerical uid is used within a variable, it is checked against the /etc/passwd and returns "unknown user". a little note: use intval(), not inval()! so all in all it is: chown($path_to_dir,intval($uidnumber)); richard esplin
As far as I can tell, PHP's built in functions will not do a recursive chown or chgrp. But it wouldn't be hard to write a function for this. Here is some starter code based on an example written by John Coggeshall which I found at http://www.coggeshall.org : <?php function recurse_chown_chgrp($path2dir, $uid, $gid){ $dir = new dir($path2dir); while(($file = $dir->read()) !== false) { if(is_dir($dir->path.$file)) { recurse_chown_chgrp($dir->path.$file, $uid, $gid); } else { chown($file, $uid); chgrp($file, $gid); } } $dir->close(); } ?> I have not tested this code (but I think it will work) because for my current needs, a simple exec("chown -r $user.$group $path"); is sufficient. I would need this code if I were not in control of the contents of these variables because they can be dangerous on the command line. greg _at_ rhythmicdesign d.o.t com
<?php function recurse_chown_chgrp($mypath, $uid, $gid) { $d = opendir ($mypath) ; while(($file = readdir($d)) !== false) { if ($file != "." && $file != "..") { $typepath = $mypath . "/" . $file ; //print $typepath. " : " . filetype ($typepath). " " ; if (filetype ($typepath) == 'dir') { recurse_chown_chgrp ($typepath, $uid, $gid); } chown($typepath, $uid); chgrp($typepath, $gid); } } } recurse_chown_chgrp ("uploads", "unsider", "unsider") ; ?> for older versions.. unfortunately, it seems I do not have permission to perform these functions. |
Change Languagebasename chgrp chmod chown clearstatcache copy delete dirname disk_free_space disk_total_space diskfreespace fclose feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents file fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype flock fnmatch fopen fpassthru fputcsv fputs fread fscanf fseek fstat ftell ftruncate fwrite glob is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable is_writeable lchgrp lchown link linkinfo lstat mkdir move_uploaded_file parse_ini_file pathinfo pclose popen readfile readlink realpath rename rewind rmdir set_file_buffer stat symlink tempnam tmpfile touch umask unlink |