首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何递归地进行chown?

如何递归地进行chown?
EN

Stack Overflow用户
提问于 2016-05-29 14:14:08
回答 2查看 801关注 0票数 1

我想使用PHP递归地更改目录的所有者。chown函数仅在单个文件上工作。

我知道我可以在终端上使用以下命令:

代码语言:javascript
复制
sudo chown -R user /path/to/dir/

如何在PHP中实现相同的功能?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-29 14:14:08

代码语言:javascript
复制
/**
 * Recursively chown a directory
 *
 * @param string     $dir
 * @param string|int $user
 */
function rchown($dir, $user)
{
    $dir = rtrim($dir, "/");
    if ($items = glob($dir . "/*")) {
        foreach ($items as $item) {
            if (is_dir($item)) {
                rchown($item, $user);
            } else {
                chown($item, $user);
            }
        }
    }

    chown($dir, $user);
}
票数 3
EN

Stack Overflow用户

发布于 2021-03-12 17:00:40

基于@littleibex答案,下面是一个可以执行以下操作的版本:

将所有权设置为文件和目录。

设置组所有权。

设置访问模式。

代码语言:javascript
复制
/**
 * Recursively set the owner of a path to a user
 * 
 * @param string    $path      Full path of directory
 * @param string    $group     Group owner
 * @param string    $user      User owner
 * @param string    $mode      access mode
 */
function rchown($path, $group, $user, $mode)
{
    $dir = rtrim($path, '/');
    if ($items = glob($dir . '/*')) 
    {
        foreach ($items as $item) 
        {
            if (is_dir($item)) 
            {
                (!empty($mode)) ? chmod($item, $mode) : '';
                (!empty($user)) ? chown($item, $user) : '';
                (!empty($group)) ? chgrp($item, $group) : '';
                rchown($item, $group, $user, $mode);
            } 
            else 
            {
                (!empty($mode)) ? chmod($item, $mode) : '';
                (!empty($user)) ? chown($item, $user) : '';
                (!empty($group)) ? chgrp($item, $group) : '';
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37510927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档