Laravel 5:具有config配置权限的mkdir / Filesystem :: makeDirectory

时间:2015-03-10 11:40:36

标签: php laravel permissions mkdir

我今天早上遇到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);

有没有人知道如何解决这个问题,同时仍能将我的权限存储在我的配置文件中?

1 个答案:

答案 0 :(得分:2)

它不起作用,因为权限应该是八进制,而不是十进制。键入0755作为数字时 - 它是八进制格式。当您尝试使用字符串"0755"时,它将自动转换为十进制755。并755 != 0755

因此,为了正确地将字符串转换为八进制数,您应该使用intval函数:

$permissions = intval( config('permissions.directory'), 8 );
$filesystem->makeDirectory($path, $permissions, true);

http://php.net/manual/en/function.intval.php