PHP mkdir() 第二个参数是 0777,但新建的目录依然无写权限的问题

在PHP中使用mkdir()创建目录时,指定的0777权限可能因系统的umask值影响而无法达到预期。umask会与设定的权限进行'与'操作,导致实际权限变为0755,无写权限。解决方法是通过umask()检查和调整当前umask值,确保目录能获得0777权限。umask是决定文件和目录默认创建权限的设置,它定义了从权限码中移除的位。了解umask的工作原理对于正确设置文件和目录权限至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数mkdir前两个参数,目录路径和访问权限

  例mkdir('/tmp/test',0777)

  然后要得到的权限码,不一定是上边设定的,当前系统的umask将会与设定的值‘与’,这样子才是真正的权限码,例如,如果umask为022,那码上边得到的权权限码为0755,没有写的权限

  所以如果我们想要真正的得到0777的权限,代码:

<?php
    $oldumask=umask(0);
    mkdir('test',0777);
    umask($oldumask);

umask()检查并修改当前的umask码,并返回修改之前的umask码

  umask 是什么?

  我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢?

  当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是 umask 干的事情。umask 设置了用户创建文件的默认权限,它与 chmod 的效果刚好相反,umask 设置的是权限“补码”,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴国进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值