Laravel文件缓存:我们可以设置文件权限吗?

f2uvfpb9  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(209)

我问你是否有可能添加一个权限掩码到config/cache.php,使新的缓存文件创建664,而不是644作为文件权限掩码。
我使用的shell也是www-data组的成员,但是对于644,shell用户不能删除缓存。

xfb7svmp

xfb7svmp1#

您可以创建新的文件缓存存储示例或自定义缓存驱动程序。然后设置权限。
Laravel文件存储文档

__construct(Filesystem $files, string $directory, int|null $filePermission = null)

$filePermission接受整数|零

namespace App\Extensions;

use Illuminate\Contracts\Cache\Store;

class CustomStore implements Store
{
  public function __construct(Filesystem $files, string $directory, int|null $filePermission = null) {}
  public function get($key) {}
  public function many(array $keys) {}
  public function put($key, $value, $seconds) {}
  public function putMany(array $values, $seconds) {}
  public function increment($key, $value = 1) {}
  public function decrement($key, $value = 1) {}
  public function forever($key, $value) {}
  public function forget($key) {}
  public function flush() {}
  public function getPrefix() {}
}

创建自定义缓存驱动程序后,可以注册它,请参见说明

cnh2zyt3

cnh2zyt32#

如果您使用的是文件存储驱动程序,laravel会从您的配置中阅读文件权限设置来创建驱动程序:

protected function createFileDriver(array $config)
{
    return $this->repository(new FileStore($this->app['files'], $config['path'], $config['permission'] ?? null));
}

这意味着您可以通过在config/cache.php中添加关键字“permission”来指定文件权限,如下所示:

'stores' =>[
        ...
        'file' => [
            'driver' => 'file',
            ...
            'permission' => 0664,
        ],
     ]

请确保使用前导0指定权限,以便正确解释权限,因为phps chmod函数是内部使用的。
我用Laravel 9测试了这一点,但没有检查这种行为在旧版本中是否不同。

相关问题