递归 chmod/chown/chgrp 目录中的所有文件和文件夹
我在一个建立其他网站的网站上工作.有些如果我使用 copy() 来创建文件和目录,其他时候我正在用 php 构建 XML 文件并使用 DOMDocument::save 来保存它们.最终结果是一个具有各种混乱权限的根文件夹.我一直在修改文件和文件夹,这在一定程度上是这样的,但在使用 copy()
时我特别遇到麻烦.
I am working on a site which builds other sites. Some if it I use copy() to create the files and directories, other times I'm building XML files in php and using DOMDocument::save to save them. The end result is a root folder with all sorts of messed up permissions. I've beening modding files and folders as I go, which words to some extent, but I'm particularly having trouble when it comes to using copy()
.
(这是我目前所处的位置http://pastebin.com/SBE8vtFX,请注意:function modPath($path)
)
(This is where I'm at so far http://pastebin.com/SBE8vtFX, attn: function modPath($path)
)
我想采用不同的方法,并chmod/chown/chgrp根据我的规范chmod/chown/chgrp将我的文档根目录中的所有文件和文件夹一次递归.
I want to take a different approach and recursively chmod/chown/chgrp all the files and folders within my document root to my specifications at once.
以文档根目录为例
/home/mysite/public_html
在 public_html
中我有
-rwxrwxrwx 1 mysite mysite 348 Aug 31 10:49 index.php
d--------x 5 root root 4096 Aug 30 10:21 folder1
drwxrwxrwx 2 mysite mysite 4096 Aug 30 09:41 folder2
我的问题:
如何一次修改指定目录中的所有文件?我也想区分目录和文件夹之间的不同 chmod 设置.这需要一个 PHP 解决方案.
My question:
How can I mod all files within a specified directory at once? I want to differentiate different chmod settings between directories and folders as well. This needs to be a PHP solution.
这是我能做到的
<?php
function modAll($root) {
$aPath = explode("/", $root);
$user = $aPath[2];
/* Some sort of looping through $root */ {
$mod = (is_dir($thisfileorfolder) ? 0755 : 0644);
chmod($thisfileorfolder, $mod);
chown($thisfileorfolder, $user);
chgrp($thisfileorfolder, $user);
}
}
?>
推荐答案
这应该会有所帮助.更正了一些语法错误
This should be helpful. EDITED: some syntax errors corrected
function fsmodify($obj) {
$chunks = explode('/', $obj);
chmod($obj, is_dir($obj) ? 0755 : 0644);
chown($obj, $chunks[2]);
chgrp($obj, $chunks[2]);
}
function fsmodifyr($dir)
{
if($objs = glob($dir."/*")) {
foreach($objs as $obj) {
fsmodify($obj);
if(is_dir($obj)) fsmodifyr($obj);
}
}
return fsmodify($dir);
}
相关文章