我使用了 'composer update',更新了一些软件包。在更新过程中,网站仍在运行。但是,在提示'编译的服务文件已被移除'之后,网站就无法加载了,而是提示:"'编译的服务文件已被移除':
Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.
最奇怪的是,当我再次运行'composer update'时,网站又开始运行了,直到编译后的服务文件被删除,这时网站又会出现同样的错误。我已经尝试了出现这种错误时应该做的常规操作(将所有内容都 chown -R 到正确的用户/组,并将所有文件和文件夹的 chmod 分别设置为 664 和 775)。
我不知道该怎么办了,因为这个错误似乎并不';正确';。
简短版本:如果使用AWS eb cli之类的软件上传,请确认_bootstrap/cache_文件夹(不是指其内容)是否正在部署。
<br>; 我的回答背后的一些背景 >;我正在使用亚马逊网络服务(Amazon Web Services';Elastic Beanstalk)来托管我的 Laravel 项目。由于我刚开始使用 Laravel,所以对它的功能不是很了解。前两天,我的新部署都在中途崩溃,并伴有OP'错误信息。
那天早些时候,我意识到我没有使用
php artisan config:cache
来缓存配置以加快速度。我在 composer.json's "post-install-cmd" 和 "post-update-cmd" 条款中添加了同样的内容。
我还在.ebignore文件中添加了语句,不上传 _/bootstrap/cache的内容(因为其内容与环境有关也就是我的本地主机配置对我的生产服务器没有意义)
我在本地主机上配置的/bootstrap/cache_内容对我的生产服务器没有任何意义;
<br>;
而且 facepalm 我没有意识到这将阻止 bootstrap/cache 文件夹被上传(就像 git 一样,eb cli 会忽略空文件夹)。
因此,当我在晚上开始部署时,部署就会崩溃。
<br>;
<br>;
因此,我现在只需在 bootstrap/cache 中放置空占位符(例如).gitkeep 文件。部署工作又恢复正常了:)
<br>;
(虽然问题很简单,但我在登录并挖了一个 EBS EC2 实例后才知道原因 ~.~ )