fro*_*zee 13 php queue caching laravel-5 artisan
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的缓存文件.
Pre*_*tic 13
使用sudo: sudo rm -r ./storage/framework/cache
确保写入缓存的所有进程使用相同的用户(而不仅仅属于同一个组),因为事实证明,Laravel使用0755行的权限写入缓存文件,这限制了对所有者的写入.
如果像我一样,你会为每个用户使用不同的用户:
您最终会得到属于不同用户的文件,即使它们属于所需的组,也不能被其他用户写入或删除(以www-data为例).
希望有人能找到一种方法在Larvel中将新的缓存文件权限设置为类似于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开发人员提交错误报告.由于解决方案是微不足道的,我会把它留给其他人去做.
| 归档时间: |
|
| 查看次数: |
18263 次 |
| 最近记录: |