gpt4 book ai didi

php - Mkdir() 设置权限 777

转载 作者:行者123 更新时间:2023-12-02 04:09:53 25 4
gpt4 key购买 nike

如何为 777 以下的文件夹设置权限?

 mkdir(getcwd() . '/public/profile/usr'.$user->getId(), 0777, true);
mkdir(getcwd() . '/public/profile/usr'.$user->getId() . '/patients', 0777, true);
mkdir(getcwd() . '/public/profile/usr'.$user->getId() . '/picture', 0777, true);

这些文件夹的权限类型如下:

drwxr-xr-x

我希望它设置为:

drwxrwxrwx

你能告诉我如何解决这个问题吗?

最佳答案

首先,永远没有充分的理由将文件夹或文件权限设置为 777。感觉需要这样做的人通常要么盲目地遵循(糟糕的)在线教程,要么有一个他们无法修复的底层安全/权限问题。通常,任何上传/写入问题都可以通过在文件夹上设置正确的所有者/组(通常是 www-data 或 apache 用户)来解决,777 意味着任何人都可以写入或执行 这些文件夹中的任何内容。在一个糟糕的社区里,你基本上是把后门开着并没有上锁。另请参阅How will a server become vulnerable with chmod 777?了解更多详情。

话虽这么说,我已经看到 mkdir() 这样的问题之前,通常是因为某个umask在正在设置的系统上,强制新创建的文件夹具有 755 权限。做具体的chmod()不过,调用即可解决问题:

mkdir(getcwd() . '/public/profile/usr'.$user->getId(), 0777, true);
chmod(getcwd() . '/public/profile/usr'.$user->getId(), 777);
// And so on...

但是,更好的解决方案:解决您的权限/安全问题。只需设置正确的所有者(PHP 运行的进程),这将避免设置 777 权限,但将允许正确的上传处理。这应该已经是默认值,但您可以通过以下方式强制它:

// This will get the user the PHP process is running under on Linux machines:
$user = `whoami`;

mkdir(getcwd() . '/public/profile/usr'.$user->getId(), 0755, true);
chown(getcwd() . '/public/profile/usr'.$user->getId(), $user);
// And so on

这将为该文件夹设置 755 权限,并将所有权设置为 PHP 进程,这意味着 PHP 对该文件夹拥有完全权限,但任何其他用户都没有。这更安全,但也同样方便。

该问题也可能是由 SELinux 引起的,在这种情况下 chmod 777 无论如何也不会对你有太大帮助。通常是httpd_public_content_rw_t上传文件夹需要上下文。

关于php - Mkdir() 设置权限 777,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37270166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com