ChatGPT解决这个技术问题 Extra ChatGPT

Laravel 更新后抛出“引导/缓存目录必须存在且可写”错误

我使用了“composer update”,它更新了一些包。在更新过程中,网站仍然可以运行。但是,在显示“已删除已编译的服务文件”后,该网站不会加载,而是显示:

Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.

最奇怪的是,当我再次运行“composer update”时,网站再次开始工作,直到编译的服务文件被删除,此时它再次抛出相同的错误。我已经尝试了出现此错误时应该做的通常的事情(chown -R all to the right user/group and chmod all files and folder 664 and 775)。

我不知道该怎么办了,因为错误似乎不“正确”..

我忘了说'composer update' 也更新了 laravel 框架,从 5.4.18 到 5.4.21
就我而言mkdir -p bootstrap/cache/ && sudo chown -R user bootstrap/cache/

J
Jim Wright

运行作曲家更新后试试这个:

php artisan cache:clear

Waaaay 为时已晚,但这是简单的解决方案。我忘了告诉你,但谢谢你!
警告在这里是合适的。在生产停止运行它之前,问问自己是否真的想彻底清除缓存。否则,您最终可能会像发生在我身上一样使您的应用程序瘫痪。
不工作?我在引导文件夹中没有缓存文件夹
你真的救了我的命!
此外,如果此解决方案不能立即工作 - 检查您是否有类似 OPCache 的运行,您可能需要重新启动 PHP-FPM / 清除 OPCache 缓存。 :)
m
mpalencia

在你的 Laravel 目录文件中,运行:

sudo chmod -R 777 bootstrap/cache/

我很确定 777 在网络服务器上的任何文件夹在安全方面都不是一个好主意。此外,775应该而且已经奏效了。
对不起,我不清楚。 775过去曾工作过。目前我仍然有同样的问题,正如我在原帖中所说,我已经尝试了 775'ing 和 664'ing 一切。问题正是如此:我修复了错误所说的应该修复的内容,但我仍然遇到同样的问题。
必须是 sudo chmod -R 777 bootstrap 然后才能正常运行。
M
Mohit Poddar

解决此错误的最佳方法是: 1. 打开您的项目文件夹 2. 移动到引导目录 3. 创建一个名为“cache”的空文件夹 4. 然后执行 php artisan cache: clear 这肯定会工作


V
Vinay Vissh

简短版本:如果使用 AWS eb cli 之类的东西上传,请验证是否正在部署 bootstrap/cache 文件夹(不谈论其内容)。

我的答案背后的一些背景

我正在使用 Amazon Web Services 的 Elastic Beanstalk 来托管我的 Laravel 项目。当我刚开始使用 Laravel 时,我对其功能并没有太多了解。两天前,我的新部署都在中途因 OP 的错误消息而崩溃。

那天早些时候,我意识到我没有使用

 php artisan config:cache

缓存配置以使事情变得更快。我在 composer.json 的“post-install-cmd”和“post-update-cmd”子句中添加了相同的内容。我还在 .ebignore 文件中添加了不上传 /bootstrap/cache 内容的语句(因为它的内容取决于环境,也就是我的本地主机配置在我的生产服务器上没有意义)而且我没有意识到这会停止引导/cache 文件夹被上传(就像 git 一样,eb cli 忽略空文件夹)。所以,当我开始在晚上进行部署时,部署本来就是要崩溃的。所以,现在我刚刚在 bootstrap/cache 中放置了空占位符(比如).gitkeep 文件。部署又开始工作了 :) (虽然问题很简单,但我在 ssh 和挖掘 EBS EC2 实例睡了几个小时后才意识到原因~.~)


如果你能告诉我你为什么拒绝我的回答,那将是非常好的。因为据我所知,它解决了所问问题的特定情况。
e
eaglebearer

对我来说,我在 bootstrap 中手动创建了缓存文件夹。


我也是,只要删除当前缓存文件夹并重新创建它,然后问题将得到解决
S
Sadegh Ameri

我在 Windows 10 上以非提升模式(非管理员)使用 cmder。命令 php artisan cache:clear 对我不起作用。文件夹 bootstrap/cache 不存在。我创建了该文件夹并从 bootstrap 和 bootstrap/cache 文件夹中删除了只读。 composer install 和 composer update 现在都在工作。


A
Arif.0o7
sudo chmod -R ug+rwx storage bootstrap/cache

希望这能解决问题。


W
Waleed Muaz

运行作曲家更新后也试试这个:

php artisan config:clear

m
mohamed elshazly

它适用于我在项目文件夹中运行

 sudo chmod -R 777 bootstrap/cache

比跑

 composer update

比跑

 cache:clear

它不是引导程序/现金,而是引导程序/缓存
A
Ayman Elshehawy

如果不创建新的,首先确保 bootstrap/cache 目录存在 mkdir -p bootstrap/cache/

然后运行 php artisan config:cache


c
cigien

简单的。有些应用程序可以阻止目录。像 google 驱动器同步器、One 驱动器同步器或任何其他使用 Windows 资源管理器的应用程序。

删除缓存文件夹。再次创建这个。


S
Software Developer

尝试在项目根目录中执行以下命令

composer update

然后做

composer dumpautoload

这将避免弄乱缓存文件的必要性,这可能会导致全新的问题


C
CodeToLife

我无法想象我之前做错了什么,并且没有任何与现金清算相关的游戏有意义。但正如它声称的那样, /bootstrap 内没有“缓存”文件夹。必须手动创建它。现在一切都好起来了


Z
Zellerich

我必须创建这五个文件夹才能再次运行 artisan。

mkdir bootstrap/cache
mkdir storage/framework
mkdir storage/framework/cache
mkdir storage/framework/views
mkdir storage/framework/sessions

在这个相关问题中找到了答案:"Please provide a valid cache path" error in laravel


M
Mugoma J. Okomba

如果将 Web 服务器(例如 ApacheNginx)用作前端,则解决方案是使目录 bootstrap/cache 归 Web 服务器组所有。对于 Nginx

 $ sudo chgrp -R nginx bootstrap/cache