Laravel在更新后抛出'bootstrap/cache目录必须存在且可写'错误

Pet*_*ink 44 php laravel composer-php laravel-5

我使用了'composer update',它更新了一些软件包.在更新过程中,网站仍然有效.但是,在显示"已编译的服务文件已被删除"之后,该网站未加载,而是说:

Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.
Run Code Online (Sandbox Code Playgroud)

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

我不知道该怎么做,因为错误似乎不正确.

小智 129

运行composer更新后尝试此操作:

php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)


小智 19

解决此错误的最佳方法是:

  1. 打开您的项目文件夹
  2. 移动到bootstrap目录
  3. 创建一个空文件夹,命名为cache
  4. 然后做PHPartisan cache:clear

这肯定会起作用


mpa*_*cia 7

在Laravel目录文件中,运行:

sudo chmod -R 777 bootstrap/cache/
Run Code Online (Sandbox Code Playgroud)

  • 我很确定 777'ing 网络服务器上的任何文件夹在安全方面都不是一个好主意。此外,775 应该并且已经奏效。 (2认同)

Vin*_*ssh 6

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


我的回答背后的一些背景

我正在使用 Amazon Web Services 的 Elastic Beanstalk 来托管我的 Laravel 项目。因为我刚刚开始使用 Laravel,所以我对它的功能不太了解。两天前,我的新部署都因 OP 的错误消息而在中途崩溃。

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

 php artisan config:cache
Run Code Online (Sandbox Code Playgroud)

缓存配置以加快速度。我在composer.json的“ post-install-cmd ”和“ post-update-cmd ”子句中添加了相同的内容。
而且我还添加语句.ebignore文件不能上传的内容/引导/缓存(作为其内容是环境依赖又名我的本地配置有我的生产服务器上没有意义),

捂脸我并没有意识到,这将阻止引导/cache文件夹被上传(像 git 一样,eb cli 忽略空文件夹)。
所以,当我在晚上开始部署时,部署注定要崩溃。

所以,现在我刚刚在bootstrap/cache 中放置了空占位符(比如).gitkeep文件。并且部署再次工作:) (虽然问题很简单,但我在 ssh-ing 和挖掘 EBS EC2 实例后意识到了一些甜蜜的睡眠时间〜.〜)


小智 6

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


小智 5

运行作曲家更新后也尝试一下:

php artisan config:clear
Run Code Online (Sandbox Code Playgroud)