当前位置: 首页 > 面试题库 >

为什么PHP无法创建具有777权限的目录?

柴衡
2023-03-14
问题内容

我正在尝试通过以下命令使用PHP在服务器上创建目录:

mkdir("test", 0777);

但是它不提供完全权限,仅提供以下权限:

rwxr-xr-x

问题答案:

模式是由当前的修改umask,这是022在这种情况下。

umask工作方式是减法。您获得的初始许可权,mkdir然后减去umask以获得 实际 许可权:

  0777
- 0022
======
  0755 = rwxr-xr-x.

如果您不希望这种情况发生,则需要将您的umask临时设置为零,以使其无效。您可以使用以下代码段执行此操作:

$oldmask = umask(0);
mkdir("test", 0777);
umask($oldmask);

第一行将更改umask为零,同时将前一个存储到中$oldmask。第二行使目录使用所需的权限和(现在不相关)umask。第三行将还原umask为原始状态。

有关umask和mkdir的更多信息,请参见PHP
doco 。



 类似资料:
  • 创建目录权限 如果你想创建一个目录并授予777权限,你需要怎么做?查看Go的API文档我们可以这样写。 源文件为mkdir.go。 package main import ( "fmt" "os" ) func main() { err := os.MkdirAll("/tmp/gotest/", 0777) if err != nil { panic(er

  • 我试图弄清楚如何使用Ansible(version2.0.2.0和python 2.7.3)创建一个名为“deployer”的用户,并能够使用该id登录服务器,然后进行“apt-get install”之类的操作。我的剧本是这样的: 运行这个playbook后,我可以以“deployer”(例如ssh deployer@myserver)的身份ssh进入机器,但是如果我运行sudo命令,它总是要求

  • 我正在构建一个软件平台,作为概念验证(并确定它需要什么),我正在使用此处列出的我的平台存储库构建一个名为Telegram RP的即时通讯程序:https://github.com/BlueHuskyStudios/Blue-Husky-Software-Platform 现在,我已经决定将特定于JVM的代码与通用代码分开,但在我这样做的第一步,它将无法编译。 我被难住了。我已经三次检查了语言级别的

  • 问题内容: 我试图通过checkPermission()方法获取目录权限,如代码中所示。 大多数相关File类方法(例如canRead(),canWrite()等)的java(<= 6)文档都表明它们对文件有用,但对目录却没有帮助(这里我错了吗?)。 我没有在服务器上运行代码,也没有运行多个线程,并且需要在它们之间保存acc,或者做任何棘手的事情,这很简单- 使用本地运行的jvm和代码重新安装ec

  • 我在编写部署在Tomcat上的Grails应用程序时遇到了一些奇怪的问题。 在创建简单的测试控制器之后,我想在包com中编写测试内容 我有个例外: 类java.io.FileNotFoundException消息/home/user/domains/domain.com/public_html/the-file-name.txt(Brak dost rpu) 我已经将chmod设置为777到。而是

  • 问题内容: 在Java中创建文件对象时,如何将文件权限设置为777(或任何其他任意权限)? 问题答案: 如果在启动JVM之前将设置为,则将对所有人创建具有所有权限的所有创建的文件和目录。这 可能是 一个坏主意。 创建文件后,可以使用,API来修改模式位。如果您授予权限,那通常就足够了;如果您要尝试 删除 其他用户的权限,则可能应该从一开始就非常严格地设置权限。(在启动JVM之前,然后将权限添加到您