在新创建的目录

时间:2015-09-22 12:39:12

标签: php file-permissions

这是使用错误权限创建“cache”文件夹的代码:

mkdir($saveFolder, 02775);

当我使用ls -la检查文件夹权限时,我会收到:

drwxr-sr-x

但相反,我期待:

drwxrwsr-x

2 个答案:

答案 0 :(得分:5)

出于某些不明原因(至少对我而言)将代码更改为

mkdir($saveFolder);
chmod($saveFolder, 02775);

解决了这个问题。

现在我在文件夹上设置了正确的权限:

drwxrwsr-x

答案 1 :(得分:1)

您当前的umask也会影响模式,因此根据您的umask设置,创建的目录的模式可能与函数调用中指定的八进制不匹配。 http://php.net/manual/en/function.mkdir.php

  

默认情况下,模式为0777,这意味着可以进行最广泛的访问。有关模式的更多信息,请阅读chmod()页面上的详细信息。请注意,您可能希望将模式指定为八进制数,这意味着它应该具有前导零。 该模式也会被当前的umask修改,您可以使用umask() 进行更改。

尝试设置umask(0),提供给mkdir()的参数应该按预期工作。

此处有更多讨论:https://bugs.php.net/bug.php?id=65796