Laravel 5: mkdir/Filesystem::makeDirectory 具有来自配置的权限
Laravel 5: mkdir/Filesystem::makeDirectory with permissions from config
今天早上我 运行 遇到了 FileSystem::makeDirectory
的问题,它直接调用 mkdir
。我正在尝试创建一个目录,以递归方式从我的配置中拉出所需的模式,如下所示:
$filesystem->makeDirectory($path, config('permissions.directory'), true);
config/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
.
如果我删除对 config
的调用,则创建的目录具有正确的权限:
$filesystem->makeDirectory($path, 0775, true);
有没有人知道如何解决这个问题,同时仍然能够将我的权限存储在我的配置文件中?
它不起作用,因为权限应该是八进制的,而不是十进制的。当您键入 0755
作为数字时 - 它是八进制格式。当您尝试使用字符串 "0755"
- 它将自动转换为十进制 755
。和 755 != 0755
。
因此,为了将字符串正确转换为八进制数,您应该使用 intval
函数:
$permissions = intval( config('permissions.directory'), 8 );
$filesystem->makeDirectory($path, $permissions, true);
今天早上我 运行 遇到了 FileSystem::makeDirectory
的问题,它直接调用 mkdir
。我正在尝试创建一个目录,以递归方式从我的配置中拉出所需的模式,如下所示:
$filesystem->makeDirectory($path, config('permissions.directory'), true);
config/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
.
如果我删除对 config
的调用,则创建的目录具有正确的权限:
$filesystem->makeDirectory($path, 0775, true);
有没有人知道如何解决这个问题,同时仍然能够将我的权限存储在我的配置文件中?
它不起作用,因为权限应该是八进制的,而不是十进制的。当您键入 0755
作为数字时 - 它是八进制格式。当您尝试使用字符串 "0755"
- 它将自动转换为十进制 755
。和 755 != 0755
。
因此,为了将字符串正确转换为八进制数,您应该使用 intval
函数:
$permissions = intval( config('permissions.directory'), 8 );
$filesystem->makeDirectory($path, $permissions, true);