我想使用PHP递归地更改目录的所有者。chown函数仅在单个文件上工作。
我知道我可以在终端上使用以下命令:
sudo chown -R user /path/to/dir/如何在PHP中实现相同的功能?
发布于 2016-05-29 14:14:08
/**
* 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);
}发布于 2021-03-12 17:00:40
基于@littleibex答案,下面是一个可以执行以下操作的版本:
将所有权设置为文件和目录。
设置组所有权。
设置访问模式。
/**
* 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) : '';
}
}
}
}https://stackoverflow.com/questions/37510927
复制相似问题