Laravel 5.4 - php artisan cache:使用'file'缓存驱动程序时clear不清除缓存文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.4 - php artisan cache:使用'file'缓存驱动程序时clear不清除缓存文件相关的知识,希望对你有一定的参考价值。
Laravel 5.4 app。 CACHE_DRIVER
设置为file
,QUEUE_DRIVER
设置为sync
中的.env
。
当我运行php artisan cache:clear
它说Cache cleared successfully
但我仍然有我的storage/framework/cache
目录中的236K文件。
对此感到沮丧,我还使用该目录中的storage/framework/cache
手动删除了rm -rf *
下的所有文件/目录。
现在,当我运行art queue:restart
时,我得到了[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的缓存文件。
简短的回答
使用sudo:sudo rm -r ./storage/framework/cache
答案很长
确保写入缓存的所有进程使用相同的用户(而不仅仅属于同一个组),因为事实证明Laravel使用0755行的权限写入缓存文件,这限制了对所有者的写入。
如果像我一样,你会为每个用户使用不同的用户:
- PHP进程
- 工匠CLI
- 工匠通过主管(工作)
您最终会得到属于不同用户的文件,即使它们属于所需的组,也不能被其他用户写入或删除(以www-data为例)。
希望有人能找到一种方法将Laravel中的新缓存文件权限设置为类似0775的东西。如果它只是从父级继承的话会很好。
边注
这对我来说也导致管理程序进程和PHP进程之间的Cache::remember()
问题,因此我得到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开发人员提交错误报告。由于解决方案是微不足道的,我会把它留给其他人去做。
你可以试试:
php artisan config:cache
它解决了我的大部分问题。
以上是关于Laravel 5.4 - php artisan cache:使用'file'缓存驱动程序时clear不清除缓存文件的主要内容,如果未能解决你的问题,请参考以下文章
脚本 php artisan 优化处理使用 laravel 5.4 返回的 post-update-cmd 事件,错误代码为 1
Laravel 5.4 - php artisan cache:使用'file'缓存驱动程序时clear不清除缓存文件
拉拉维尔 5.4。调用错误:php artisan db:seed
Laravel:PHP Artisan Migrate 抛出 PDO 异常:找不到驱动程序(Postgres)
Laravel 5.4 artisan 为 /public 的现有文件夹提供 htaccess / 和 Routes::get