search for in the  
<chmodclearstatcache>
Last updated: Thu, 19 May 2005

chown

(PHP 3, PHP 4, PHP 5)

chown -- Changes file owner

Description

bool chown ( string filename, mixed user )

Attempts to change the owner of the file filename to user user (specified by name or number). Only the superuser may change the owner of a file.

Returns TRUE on success or FALSE on failure.

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 chmod().



User Contributed Notes
chown
greg _at_ rhythmicdesign d.o.t com
23-Feb-2004 06:00
<?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). "<BR>" ;
          
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.
Richard Esplin
11-Oct-2003 10:49
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.
Klaus Zierer
27-Jun-2003 10:37
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");
martijn at sigterm dot nl
20-Jun-2003 09:28
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).
njs+php at scifi dot squawk dot com
22-Sep-2000 01:28
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.

<chmodclearstatcache>
 Last updated: Thu, 19 May 2005
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: The Server Pages
Last updated: Thu May 19 17:35:34 2005 CDT