Jump to content

Recommended Posts

Hi there,

 

I am using a script (which overall uploads photos to a new folder) to create a new folder which needs to have its owner as "sjbrindle", group as "psacln", 777 permissions, and any file later added to it needs to be 777. I am using the following code at the moment:

 

$housename = "example";
define ("FOLDER", $_SERVER['DOCUMENT_ROOT']."/r/assets/properties/");

if (! is_dir(FOLDER.$housename)) {mkdir(FOLDER.$housename);}
if (! is_dir(FOLDER.$housename."/thumbs")) {mkdir(FOLDER.$housename."/thumbs");}

$path = FOLDER.$housename ;

$user_name = "sjbrindle:psacln";
chown($path, $user_name);

 

I know this is wrong and that I need more to do the above requirements. Can someone help me out!

Thanks

NevyNev

Link to comment
https://forums.phpfreaks.com/topic/53738-chowning-a-directory/
Share on other sites

A few functions, the first one is one I just made myself. The others are from PHP.net:

 

<?php

/* My funciton */

function changeowngrp($own, $grp, $file) {
$chgrp = chgrp($file, $grp);
$chown = chown($file, $own);

if($chgrp && $chown) {
  return true;
} else {
  return false;
}

$change = changeowngrp("sjbrindle", "psacln", "/path/to/file");

if($change) {
echo "The file's owner and group were changed successfully";
} else {
echo "There was an error whilst changing the file's owner and group";
}

/* PHP.net examples */

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") ;

/* --- */

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();
} 

recurse_chown_chgrp ("uploads", "unsider", "unsider") ;

?>

 

 

 

Link to comment
https://forums.phpfreaks.com/topic/53738-chowning-a-directory/#findComment-266134
Share on other sites

Why not just this?

exec("chown -R {$user_name} {$path}");

 

-R is for recursive.

 

man chown:

CHOWN(1)                         User Commands                        CHOWN(1)



NAME
       chown - change file owner and group

SYNOPSIS
       chown [OPTION]... [OWNER][:[GROUP]] FILE...
       chown [OPTION]... --reference=RFILE FILE...

DESCRIPTION
       This manual page documents the GNU version of chown.  chown changes the
       user and/or group ownership of each given file.  If only  an  owner  (a
       user  name or numeric user ID) is given, that user is made the owner of
       each given file, and the files’ group is not changed.  If the owner  is
       followed  by  a  colon  and a group name (or numeric group ID), with no
       spaces between them, the group ownership of the  files  is  changed  as
       well.  If a colon but no group name follows the user name, that user is
       made the owner of the files and the group of the files  is  changed  to
       that  user’s  login  group.   If the colon and group are given, but the
       owner is omitted, only the group of the files is changed; in this case,
       chown  performs  the same function as chgrp.  If only a colon is given,
       or if the entire operand is empty, neither the owner nor the  group  is
       changed.

OPTIONS
       Change the owner and/or group of each FILE to OWNER and/or GROUP.  With
       --reference, change the owner and group of each FILE to those of RFILE.

       -c, --changes
              like verbose but report only when a change is made

       --dereference
              affect  the referent of each symbolic link, rather than the sym‐
              bolic link itself (this is the default)

       -h, --no-dereference
              affect each symbolic link instead of any referenced file (useful
              only on systems that can change the ownership of a symlink)

       --from=CURRENT_OWNER:CURRENT_GROUP
              change  the  owner and/or group of each file only if its current
              owner and/or group match those specified here.   Either  may  be
              omitted,  in  which case a match is not required for the omitted
              attribute.

       --no-preserve-root
              do not treat ‘/’ specially (the default)

       --preserve-root
              fail to operate recursively on ‘/’

       -f, --silent, --quiet
              suppress most error messages

       --reference=RFILE
              use  RFILE’s  owner  and  group  rather  than   the   specifying
              OWNER:GROUP values

       -R, --recursive
              operate on files and directories recursively

       -v, --verbose
              output a diagnostic for every file processed

       The  following  options modify how a hierarchy is traversed when the -R
       option is also specified.  If more than  one  is  specified,  only  the
       final one takes effect.

       -H     if  a  command  line argument is a symbolic link to a directory,
              traverse it

       -L     traverse every symbolic link to a directory encountered

       -P     do not traverse any symbolic links (default)

       --help display this help and exit

       --version
              output version information and exit

       Owner is unchanged if missing.  Group  is  unchanged  if  missing,  but
       changed  to login group if implied by a ‘:’ following a symbolic OWNER.
       OWNER and GROUP may be numeric as well as symbolic.

EXAMPLES
       chown root /u
              Change the owner of /u to "root".

       chown root:staff /u
              Likewise, but also change its group to "staff".

       chown -hR root /u
              Change the owner of /u and subfiles to "root".

AUTHOR
       Written by David MacKenzie and Jim Meyering.

REPORTING BUGS
       Report bugs to <bug-coreutils@gnu.org>.

COPYRIGHT
       Copyright © 2006 Free Software Foundation, Inc.
       This is free software.  You may redistribute copies  of  it  under  the
       terms       of       the      GNU      General      Public      License
       <http://www.gnu.org/licenses/gpl.html>.  There is NO WARRANTY,  to  the
       extent permitted by law.

SEE ALSO
       The full documentation for chown is maintained as a Texinfo manual.  If
       the info and chown programs are properly installed at  your  site,  the
       command

              info chown

       should give you access to the complete manual.



chown 5.97                        March 2007                          CHOWN(1)

Link to comment
https://forums.phpfreaks.com/topic/53738-chowning-a-directory/#findComment-266166
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.