Laravel 5.4 - php artisan 缓存:使用“文件”缓存驱动程序时清除不会清除缓存文件

2024-02-03

Laravel 5.4 应用程序。CACHE_DRIVER被设定为file and QUEUE_DRIVER被设定为sync in .env.

当我跑步时php artisan cache:clear它说Cache cleared successfully但我的文件夹里还有 236K 的文件storage/framework/cache目录。

对此感到沮丧,我还手动删除了下的所有文件/目录storage/framework/cache using rm -rf *从该目录。

现在,当我跑步时art queue:restart I get [ErrorException] file_put_contents(/var/www/vhosts/my-app.com/releases/28/storage/framework/cache/ee/2f/ee2f842aa7bb1f53ed
f3a2ed2c09a1807ffa6c90): failed to open stream: No such file or directory

所以,我手上有两个问题。首先是:为什么 Artisan 没有删除所有缓存文件?我如何安全地删除它们?第二个问题是:我如何从中恢复,以便php artisan queue:restart我没有出错吗?

更新:我突然想到,如果QUEUE_DRIVER被设定为sync,所以跳过该命令完全解决了我的一半问题。但仍然不确定如何正确删除那些 236K 的缓存文件。


2020 年 1 月更新

似乎有一个简单的解决方案可以解决所有这些问题。使用这个答案https://serverfault.com/a/96349 https://serverfault.com/a/96349作为参考,您可以在父文件夹上设置 gid 位,以便在其下创建的所有后续文件和文件夹./storage/*正确组中的任何人都可以写入,无论是谁创建的;从而克服了如下所述的组安全权限问题。

这对我有用:

# Assumes all required users belong to the www-data group
sudo chgrp -R www-data /path/to/storage

sudo chmod g+s /path/to/storage

简短回答

使用须藤:sudo rm -r ./storage/framework/cache

长答案

确保写入缓存的所有进程都使用相同的用户(而不仅仅是属于同一组),因为事实证明 Laravel 使用类似于 0755 的权限写入缓存文件,该权限限制对所有者的写入。

如果像我一样,您为每个用户使用不同的用户:

  • PHP进程
  • 工匠 CLI
  • 工匠通过主管(工作)

您最终会得到属于不同用户的文件,并且其他用户无法写入或删除,即使它们属于所需的组(例如 www-data)。

希望有人能找到一种方法在 Laravel 中将新的缓存文件权限设置为 0775 之类的东西。如果它只是从父级继承,那就太好了。

边注

这对我来说也造成了一个问题Cache::remember()在主管进程和 PHP 进程之间,这样我就得到了put_file_contents错误,因为不同的用户无法写入缓存的文件。

原答案

我遇到了同样的问题,在我的情况下,文件没有被删除,因为它们被写保护。当我去手动删除它们时rm -r ./storage/framework/cache我收到警告rm: descend into write-protected directory 'cache/c5'?。我不会为缓存中的每个文件都输入 yes,所以我运行了与 sudo 相同的命令,它运行顺利sudo rm -r ./storage/framework/cache.

这回答了您关于为什么 Artisan 不删除它们的问题cache:clear& 跑步rm是一个足够简单的解决方法;尽管它没有解决为什么文件被写为写保护的问题。

删除缓存后,Laravel 再次将缓存创建为写保护。这意味着它可能是一个错误并且需要有人向 Laravel 开发人员提交错误报告。由于解决方法很简单,我将把它留给其他人来做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5.4 - php artisan 缓存:使用“文件”缓存驱动程序时清除不会清除缓存文件 的相关文章

随机推荐

  • 添加到 OSX 上的类路径

    谁能告诉我如何添加到 OSX 上的类路径 如果您想让计算机上的每个 Java 应用程序都可以使用一组特定的 JAR 文件 或 class 文件 那么最好的选择是将这些文件添加到 Library Java Extensions 或者 如果您想
  • 如何使用 Guava 将 MultiMap 转换为 Map>?

    我正在使用 Google Guava 12 中的 MultiMap 如下所示 Multimap
  • getSherlockActivity() 与 getActivity()

    我正在使用 SherlockFragment 直到今天我一直使用 getActivity 方法来获取托管片段的活动的实例 现在我意识到 SherlockFragment API 中也有这个方法 我应该使用哪一个 好像getSherlockA
  • Arduino Python3 脚本

    我正在尝试使用 Python3 脚本来控制 Arduino Mega 这是一个简单的脚本 用于从键盘获取一行并通过 Arduino 回显它 我从一个可用的 Python 2 脚本开始http petrimaki wordpress com
  • 在 axios 中检测 xhr.status === 0

    Context 我有一个在企业环境中运行的网络应用程序 其中所有请求都通过我无法控制的代理 该层会根据需要自动将我的用户重定向到不同域上的单点登录页面 这是基本顺序 用户类型myapp example corp进入他们的浏览器 请求通过代理
  • NHibernate - ITransaction.Commit 真的有必要吗?

    我两天前刚刚开始学习NHibernate 我正在寻找一个我根据教程编写的CRUD方法 我的插入方法是 using ISession session Contexto OpenSession using ITransaction transa
  • 开发黑莓应用程序的好工具包是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 寻找用于一般 Blackberry 开发或应用程序工具包的工具包 SDK 有类似 MVC 框架的东西吗
  • 删除一个表中未被另一个表引用的所有记录

    2张桌子 项目 编号 用户 id item id 怎么删除里面的所有记录items未引用自users 请注意 NOT IN 可能会非常慢 有时 令人惊讶的是 这样做会更快 DELETE FROM items WHERE id IN SELE
  • 线程安全与同步

    我是java新手 我对线程安全和同步有点困惑 线程安全意味着一个方法或类实例可以被多个线程同时使用而不会出现任何问题 其中 同步意味着单个时间只能有一个线程运行 那么它们之间有何关系呢 线程安全的定义在Java 并发实践 http amzn
  • Angular2 局部模板变量

    在下面的例子中 我指定了一个局部变量 input多个单选按钮 当点击 tr 我想选择里面的单选按钮 下面的代码工作正常 但我不明白为什么 当所有输入都具有局部变量时 Angular2 如何 知道 我指的是哪个输入 input HTML tr
  • Realm gradle 任务

    在我的个人资料报告期间assembleDebuggradle 任务 我发现了两个与领域相关的 gradle 子任务 这需要相当多的时间 assembleDebug 1m21 44s transformClassesWithRealmOpti
  • 从给定的 n 个点中选择最远的 k 个点

    我有一套Sn维度中的点d如果需要的话 我可以计算所有成对距离 我需要选择k该集合中的点 使得它们的成对距离之和最大 换句话说 我想要 S 中的 p1 pk 使得 sum i j 我知道这个问题与this one https stackove
  • 从Java中的IAM用户名获取Amazon访问密钥和秘密密钥

    我碰到从 Java 中的 Amazon Access Key 获取用户名 https stackoverflow com questions 13595541 get username from amazon access key in j
  • 检查 PyObject 是否为 None

    我只是想检查一下是否PyObject我有的是None 我天真地以为任何None Pyobject 从函数返回的将是 NULL 指针 但情况似乎并非如此 那么 我如何检查是否PyObject 我的指向一个None object 我知道有类似的
  • 如何在 R 中抓取网页而不出现空网站问题?

    我需要提取有关物种的信息 并编写以下代码 然而 我对一些缺失的物种有疑问 如何才能避免这个问题呢 Q lt c rvest stringr tidyverse jsonlite lapply Q require character only
  • 在 Ubuntu 上通过 pyODBC 连接到 Microsoft SQL Server

    连接到 Microsoft SQL Server 实例时遇到问题pyODBC在一个Ubuntu 12 10 机器 我返回的错误是 pyodbc Error IM002 IM002 unixODBC Driver Manager Data S
  • Winforms DataBind 到控件的 Visible 属性

    将数据绑定到控件的可见属性时是否存在任何已知问题 无论我的属性是什么 该控件始终不可见 Public ReadOnly Property IsRibbonCategory As Boolean Get Return True End Get
  • 从 Azure DevOps 导出测试结果

    我可能遗漏了一些东西 但找不到从 Azure DevOps 中项目的构建管道执行页面导出测试运行结果的方法 有一个 下载日志 当然 从技术上讲 您可以在其中找到来自测试执行步骤的日志以及其他内容 但这似乎不是定期获取此类数据以进行法规 审计
  • 如何使用头文件签名(幻数)检查文件类型?

    通过输入文件及其扩展名 我的代码成功地从 幻数 中检测到文件的类型 magic numbers png bytes 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A jpg bytes 0xFF 0xD8 0x
  • Laravel 5.4 - php artisan 缓存:使用“文件”缓存驱动程序时清除不会清除缓存文件

    Laravel 5 4 应用程序 CACHE DRIVER被设定为file and QUEUE DRIVER被设定为sync in env 当我跑步时php artisan cache clear它说Cache cleared succes