当前位置: 首页 > 知识库问答 >
问题:

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

罗昊空
2023-03-14

CACHE_DRIVER设置为fileQUEUE_DRIVER设置为syncin. env

当我运行php artisan cache:clear时,它显示缓存已成功清除,但我的存储/framework/cache目录中仍有236K个文件。

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

现在,当我运行art queue:restart时,我得到[ErrorException]文件内容(/var/www/vhosts/my app.com/releases/28/storage/framework/cache/ee/2f/ee2f842aa7bb1f53ed
f3a2ed2c09a1807ffa6c90):无法打开流:没有这样的文件或目录

所以,我手上有两个问题。首先是:为什么Artisan没有删除所有缓存文件?如何安全地删除它们?第二个问题是:我如何从这恢复,以便PHP工匠队列:重启不会在我身上出错?

更新:我突然想到,如果queue\u DRIVER设置为sync,我可能没有理由重新启动队列工作程序,因此跳过该命令可以解决一半的问题。但仍然不确定如何正确删除那些236K缓存文件。

共有3个答案

葛兴发
2023-03-14

您也可以使用Tinker:

php artisan tinker
Cache::store("file")->flush()
司空赞
2023-03-14

您可以尝试:

php artisan config:cache

它解决了我的大部分问题。

施旭东
2023-03-14

似乎有一个简单的解决办法。用这个答案https://serverfault.com/a/96349作为参考,您可以在父文件夹上设置gid位,以便所有后续文件

这对我很有用:

# 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:sudorm-r/存储/框架/缓存

确保所有写入缓存的进程都使用同一个用户(而不仅仅是属于同一个组),因为Laravel使用0755的权限写入缓存文件,这限制了对所有者的写入。

如果像我一样,您使用不同的用户进行以下操作:

  • PHP进程

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

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

对我来说,这也导致主管进程之间的Cache::memory()出现问题

我也遇到了同样的问题,在我的例子中,文件没有被删除,因为它们是写保护的。当我使用rm-r手动删除它们时/存储/framework/cache我收到了警告rm:进入写保护目录“cache/c5” 。我不打算为缓存中的每个文件键入yes,所以我运行了与sudo相同的命令

这回答了您关于Artisan为什么不删除它们的问题cache:clear

删除缓存后,Larvel再次将缓存创建为写保护。这意味着它可能是一个bug

 类似资料:
  • 清除缓存文件clear 如果需要清除应用的缓存文件,可以使用下面的命令: php think clear 不带任何参数调用clear命令的话,会清除runtime目录(包括模板缓存、日志文件及其子目录)下面的所有的文件,但会保留目录。 如果需要清除某个指定目录下面的文件,可以使用: php think clear --path d:\www\tp5\runtime\log\ V5.1.10+版本开

  • 我已经改变了Laravel公共文件夹中的文件,但当我尝试使用链接下载时,它会下载旧文件。我曾经尝试过: php artisan缓存:清除 PHP工匠路由:缓存 PHP工匠视图:清晰 PHP artisan配置:缓存 但是没有成功。有人能帮我吗?

  • 按照一般app的设计,都是主应用,和用户目录下的缓存文件,把用户自定义的或使用生成的文件都放到缓存文件目录里。鉴于此,我们来找找code.app的缓存文件,或许能发现点有用的东西 可参照 https://code.visualstudio.com/docs/customization/userandworkspace 理解 缓存目录详情 目录是 /Users/sang/Library/Applic

  • 我在我的服务器上设置了一个1年的缓存控制。如何对AppEngine说“清楚!”要从服务器获取新版本? 配置为Flex自定义环境

  • void clear_cache(string template [, string cache id [, string compile id [, int expire time]]]) This clears the cache for a specific template. If you have multiple caches for this template, you can cl

  • 本文向大家介绍IOS获取缓存文件的大小并清除缓存文件的方法,包括了IOS获取缓存文件的大小并清除缓存文件的方法的使用技巧和注意事项,需要的朋友参考一下 移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。 今天介绍的离线缓存功能的实现