nevynev Posted May 31, 2007 Share Posted May 31, 2007 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 Quote Link to comment https://forums.phpfreaks.com/topic/53738-chowning-a-directory/ Share on other sites More sharing options...
effigy Posted May 31, 2007 Share Posted May 31, 2007 chown may not support the "user:group" syntax. Try chown and chgrp. Use chmod for permissions, but be aware of the umask. Quote Link to comment https://forums.phpfreaks.com/topic/53738-chowning-a-directory/#findComment-265601 Share on other sites More sharing options...
nevynev Posted June 1, 2007 Author Share Posted June 1, 2007 Yeah I'd like to use all those things and have tried but can't make it work. Could you write some code including those functions to achieve the above requirements? Thanks alot! NevyNev Quote Link to comment https://forums.phpfreaks.com/topic/53738-chowning-a-directory/#findComment-266132 Share on other sites More sharing options...
chigley Posted June 1, 2007 Share Posted June 1, 2007 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") ; ?> Quote Link to comment https://forums.phpfreaks.com/topic/53738-chowning-a-directory/#findComment-266134 Share on other sites More sharing options...
Daniel0 Posted June 1, 2007 Share Posted June 1, 2007 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) Quote Link to comment https://forums.phpfreaks.com/topic/53738-chowning-a-directory/#findComment-266166 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.