首页 > 解决方案 > Laravel 8 storage/framework/cache/data/ee 文件夹将用户设置为 root:root 而不是 apache:apache 权限被拒绝

问题描述

我有一个 Laravel 8 应用程序,在 Cent OS 8.4 VM 上运行。我正在使用 Tymondesigns 的jwt-auth包在我的项目中实现身份验证,它被用作 API。

当我在服务器上设置项目并部署它时,storageLaravel 中的文件夹作为部署shared程序项目的一部分被移动到该目录,并且由于某种原因,尽管设置了文件夹的权限,但我看到并非每个文件夹,特别是缓存文件夹具有错误的权限,并且我收到 JWT auth 包引发的权限被拒绝错误:storageee

file_put_contents(/var/www/project-beacon-api/releases/37/storage/framework/cache/data/ee/67/ee673b1cd21b0cd9eca15c240d66269df17f9b3a):无法打开流:没有这样的文件或目录

我不明白为什么会出现此错误,并且只要我使用过 Laravel,将storage文件夹的权限设置为755/775从未起作用,并且尝试打开网站总是会引发权限被拒绝。

我在权限配置中缺少什么,我需要运行什么来一劳永逸地解决这个问题?

权限

它似乎总是ee文件夹!

标签: phplaravelpermissionsjwtcentos

解决方案


由于 laravel 缓存而发生错误在运行此命令之前转到项目中的 .env 文件,您会发现

CACHE_DRIVER = file

然后将缓存驱动程序更改为此

CACHE_DRIVER = array

在 Laravel 中使用缓存时,您应该考虑 3 个可能的“家族”:

临时/调试

大批

始终可用

文件数据库 APC(自 PHP7 以来我不相信这个)

投入的

雷迪斯

内存缓存

由于您可以轻松替换缓存驱动程序,因此您无需根据您的用例选择一个,而是更多地基于您的服务器需求/负载和可能性。

例如在你的开发机器上,我建议使用一个文件,因为这样你就不需要任何额外的软件来阻塞你的电脑,而且你可以获得快速清除缓存的能力,即使你做了一些非常糟糕的事情,比如破坏 artisan 命令。您需要做的就是删除 storage/framework 文件夹并再次拥有一个新实例(确保之后从您的存储库重新生成 .gitignore 文件)

对于您的主服务器,您必须考虑您的可能性。如果您拥有其中一个免费托管网站,您几乎肯定无法安装任何新软件,因此您可以考虑使用文件或数据库。即使数据库可能比文件快,但在大多数情况下,它是您网站的最薄弱环节,尝试将更多数据推入瓶颈不是一个好主意,这就是为什么我建议不要使用它的原因,而是坚持文件。

如果您有专用服务器,那么您绝对应该选择 Memcached 或 Redis。两者中的哪一个?这取决于很多因素,你可以在网上找到很多比较,随便找一个。我个人更喜欢 Redis,因为它具有持久化数据的能力,但是任何一个都是一个很好的解决方案


推荐阅读