Laravel在更新

时间:2017-05-01 11:28:51

标签: php laravel laravel-5 composer-php

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

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

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

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

13 个答案:

答案 0 :(得分:122)

运行编辑器更新后尝试此操作:

php artisan cache:clear

答案 1 :(得分:8)

在Laravel目录文件中,运行:

sudo chmod -R 775 bootstrap/cache/

答案 2 :(得分:3)

  

简短版:如果使用 AWS eb cli 等内容进行上传,请验证是否 bootstrap / cache 文件夹(不讨论其内容)展开。


我的回答背后的一些背景

  

我正在使用亚马逊网络服务' Elastic Beanstalk来托管我的Laravel项目。当我刚开始使用Laravel时,我对其功能并不太了解。两天前我的新部署都因OP的错误消息而中途崩溃。

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

 php artisan config:cache

缓存配置以加快速度。我在 composer.json " post-install-cmd "中添加了相同内容。和" post-update-cmd "条款。
我还在 .ebignore 文件中添加了声明,以便不上传 / bootstrap / cache 的内容(因为其内容取决于环境又名我的localhost配置对我的生产服务器没有意义)

并且 facepalm 我没有意识到这会阻止 bootstrap / cache 文件夹被上传(就像git,eb cli忽略空文件夹)。
所以,当我开始在夜间部署时,部署意味着崩溃。

所以,现在我刚刚在 bootstrap / cache 中放置了空占位符(例如) .gitkeep 文件。部署再次工作:)
(虽然这个问题很简单,但我知道了为了一些甜蜜的睡眠时间而匆匆挖掘和挖掘EBS EC2实例之后的原因〜。)

答案 3 :(得分:2)

解决此错误的最佳方法是: 1.打开您的项目文件夹 2.移至引导目录 3.创建一个名为“ cache”的空文件夹 4.然后做php artisan缓存:清除 这肯定可以工作

答案 4 :(得分:1)

我在Windows 10上以非提升模式(Non-Admin)使用cmder。 命令php artisan cache:clear不适用于我。 文件夹引导程序/缓存不存在。 我创建了该文件夹,并从bootstrap和bootstrap / cache文件夹中删除了只读。 composer安装和composer更新现在都可以使用。

答案 5 :(得分:1)

对我来说,我是在引导程序中手动创建缓存文件夹的。

答案 6 :(得分:0)

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

 $ sudo chgrp -R nginx bootstrap/cache

答案 7 :(得分:0)

对我来说工作在项目文件夹中

 sudo chmod -R 777 bootstrap/cache

比运行

 composer update

比运行

 cache:clear

答案 8 :(得分:0)

sudo chmod -R ug+rwx storage bootstrap/cache

希望这可以解决问题。

答案 9 :(得分:0)

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

composer update

然后做

composer dumpautoload

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

答案 10 :(得分:0)

在运行作曲家更新后也可以尝试以下操作:

php artisan config:clear

答案 11 :(得分:0)

我不认为我之前做错了什么,并且没有关于现金清算的游戏是有意义的。但正如它声称的那样,/ bootstrapp中没有'cache'文件夹。必须手动创建它。现在一切都好起来了

答案 12 :(得分:0)

  • 如果不创建新目录,请先确保 bootstrap/cache 目录存在 mkdir -p bootstrap/cache/
  • 然后运行 ​​php artisan config:cache