php - Laravel 8 storage/framework/cache/data/ee 文件夹将用户设置为 root:root 而不是 apache:apache 权限被拒绝
问题描述
我有一个 Laravel 8 应用程序,在 Cent OS 8.4 VM 上运行。我正在使用 Tymondesigns 的jwt-auth包在我的项目中实现身份验证,它被用作 API。
当我在服务器上设置项目并部署它时,storage
Laravel 中的文件夹作为部署shared
程序项目的一部分被移动到该目录,并且由于某种原因,尽管设置了文件夹的权限,但我看到并非每个文件夹,特别是缓存文件夹具有错误的权限,并且我收到 JWT auth 包引发的权限被拒绝错误:storage
ee
file_put_contents(/var/www/project-beacon-api/releases/37/storage/framework/cache/data/ee/67/ee673b1cd21b0cd9eca15c240d66269df17f9b3a):无法打开流:没有这样的文件或目录
我不明白为什么会出现此错误,并且只要我使用过 Laravel,将storage
文件夹的权限设置为755
/775
从未起作用,并且尝试打开网站总是会引发权限被拒绝。
我在权限配置中缺少什么,我需要运行什么来一劳永逸地解决这个问题?
它似乎总是ee
文件夹!
解决方案
由于 laravel 缓存而发生错误在运行此命令之前转到项目中的 .env 文件,您会发现
CACHE_DRIVER = file
然后将缓存驱动程序更改为此
CACHE_DRIVER = array
在 Laravel 中使用缓存时,您应该考虑 3 个可能的“家族”:
临时/调试
大批
始终可用
文件数据库 APC(自 PHP7 以来我不相信这个)
投入的
雷迪斯
内存缓存
由于您可以轻松替换缓存驱动程序,因此您无需根据您的用例选择一个,而是更多地基于您的服务器需求/负载和可能性。
例如在你的开发机器上,我建议使用一个文件,因为这样你就不需要任何额外的软件来阻塞你的电脑,而且你可以获得快速清除缓存的能力,即使你做了一些非常糟糕的事情,比如破坏 artisan 命令。您需要做的就是删除 storage/framework 文件夹并再次拥有一个新实例(确保之后从您的存储库重新生成 .gitignore 文件)
对于您的主服务器,您必须考虑您的可能性。如果您拥有其中一个免费托管网站,您几乎肯定无法安装任何新软件,因此您可以考虑使用文件或数据库。即使数据库可能比文件快,但在大多数情况下,它是您网站的最薄弱环节,尝试将更多数据推入瓶颈不是一个好主意,这就是为什么我建议不要使用它的原因,而是坚持文件。
如果您有专用服务器,那么您绝对应该选择 Memcached 或 Redis。两者中的哪一个?这取决于很多因素,你可以在网上找到很多比较,随便找一个。我个人更喜欢 Redis,因为它具有持久化数据的能力,但是任何一个都是一个很好的解决方案
推荐阅读
- c - `pointer[restrict static 1]` 在声明这样的指针时会带来什么优化好处?
- jquery - Bootstrap-Multiselect Dropdown 在 ASP.NET MVC 中使用 Jquery Ajax 将参数传递给控制器
- veracode - 如何修复网页中与脚本相关的 HTML 标记的不当中和(基本 XSS)属性?
- java - 预期 BEGIN_ARRAY 但 BEGIN_OBJECT 在第 1 行第 2 列路径 $?
- xcode - Xcode:帧捕获没有项目的第三方应用程序
- css - HTML5 日期和时间输入的原生控件定位
- excel - 将 Excel 文件的副本保存到 SharePoint
- python - 检测是否在 Python Zelle 图形中的框内单击
- jquery - 如何获得价值
- angular - 如果以角度调用两次,如何等待相同的 observable 完成?