我今天早上遇到FileSystem::makeDirectory
直接调用mkdir
的问题。我尝试创建一个目录,递归地从我的配置中拉出所需的模式,如下所示:
$filesystem->makeDirectory($path, config('permissions.directory'), true);
配置/ permissions.php
<?php
return [
'directory' => env('PERMISSIONS_DIRECTORY', 0755),
'file' => env('PERMISSIONS_FILE', 0644)
];
.ENV
...
PERMISSIONS_DIRECTORY=0775
PERMISSIONS_FILE=0664
调用此目录时,会创建目录,但是获取的权限会搞乱。它得到了dr----Sr-t+
的内容。经过一些研究后,我得出的结论是,当我使用config('permissions.directory')
将值传递给我的配置模式参数时,模式被视为十进制而不是八进制。因此,调用config可能会返回775
,而不是0775
。{/ p>
如果我删除了对config
的调用,则会使用正确的权限创建目录:
$filesystem->makeDirectory($path, 0775, true);
有没有人知道如何解决这个问题,同时仍能将我的权限存储在我的配置文件中?
答案 0 :(得分:2)
它不起作用,因为权限应该是八进制,而不是十进制。键入0755
作为数字时 - 它是八进制格式。当您尝试使用字符串"0755"
时,它将自动转换为十进制755
。并755 != 0755
。
因此,为了正确地将字符串转换为八进制数,您应该使用intval
函数:
$permissions = intval( config('permissions.directory'), 8 );
$filesystem->makeDirectory($path, $permissions, true);