PHP
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

clearstatcache> <chmod
Last updated: Fri, 26 Dec 2008

view this page in

chown

(PHP 4, PHP 5)

chownChange le propriétaire du fichier

Description

bool chown ( string $filename , mixed $user )

Change le propriétaire du fichier filename en user . Seul le super-utilisateur (root) peut changer arbitrairement le propriétaire d'un fichier.

Liste de paramètres

filename

Chemin vers le fichier.

user

Un nom ou un numéro d'utilisateur.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemples

Exemple #1 Exemple avec chown()

<?php

// Nom du fichier et nom d'utilisateur à utiliser
$file_name"foo.php";
$path "/home/sites/php.net/public_html/sandbox" $file_name ;
$user_name "root";

// Définit l'utilisateur
chown($path$user_name);

// Vérification du résultat
$stat stat($path);
print_r(posix_getpwuid($stat['uid']));

?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

array(7) {
  ["name"]=>
  string(13) "php.net"
  ["passwd"]=>
  string(1) "x"
  ["uid"]=>
  int(148864)
  ["gid"]=>
  int(148910)
  ["gecos"]=>
  string(13) "php.net"
  ["dir"]=>
  string(25) "/home/sites/php.net"
  ["shell"]=>
  string(13) "/sbin/nologin"
}

Notes

Note: Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.

Note: Lorsque le safe-mode est activé, PHP vérifie si le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.

Voir aussi



clearstatcache> <chmod
Last updated: Fri, 26 Dec 2008
 
add a note add a note User Contributed Notes
chown
Mikevac at yahoo dot com
01-Feb-2008 08:42
I've only tested this on Solaris 10 so your mileage may vary.

To allow the apache daemon to change file ownership without being root, add the following line to /etc/system:

set rstchown=0

Reboot the server.

There are security concerns doing this as this modification allows any user to change ownership of their files to anyone else.
Tayfun Bilsel
11-Jan-2006 05:13
Simple usage of the chown:

<?php

$file_name
= "test";
$path = "/var/www/html/test/" . $file_name ;

$user_name = "root";

chown($path, $user_name);

?>
Jens Vieler
23-May-2005 09:38
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));
greg _at_ rhythmicdesign d.o.t com
24-Feb-2004 01: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
12-Oct-2003 05: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 05: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 04: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 08: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.

clearstatcache> <chmod
Last updated: Fri, 26 Dec 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites