我使用了'Composer Update',它更新了一些软件包。在更新过程中,网站仍然运行。但是,在说"已删除了编译的服务文件"之后,网站没有加载,而是说:
Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.
最奇怪的是,当我再次运行"作曲家更新"时,网站再次开始工作,直到删除了编译服务文件为止,此时它将再次引发相同的错误。当出现此错误时,我已经尝试了应该完成的通常的事情(Chown -R分别为正确的用户/组和CHMOD所有文件和文件夹664和775(。
我不知道该怎么办,因为错误似乎不正确。作曲家更新:
php artisan cache:clear
在您的laravel目录文件上,运行:
sudo chmod -R 777 bootstrap/cache/
解决此错误的最佳方法是:
- 打开您的项目文件夹
- 移至
bootstrap
目录 - 创建一个名为
cache
的空文件夹 - 然后做PHP
artisan cache:clear
这将肯定有效
简短版本:如果使用 aws aws eb cli ex eb cli 验证如果 bootstrap/cache 文件夹(不谈论其内容(正在上传。部署。
我答案背后的一些背景
我正在使用Amazon Web Services的Elastic Beanstalk主持我的Laravel项目。当我刚开始使用Laravel时,我对其功能没有太多了解。两天后,我的新部署都通过OP的错误消息在中途崩溃。
那天早些时候,我意识到我没有使用
php artisan config:cache
以缓存配置使事情更快。我在 composer.json 's" post-install-cmd "one_answers" tost-cmd-cmd "条款中添加了相同的内容。
我还在.ebignore 文件中添加了语句,以不上传/bootstrap/cache 的内容(因为其内容取决于环境 a.k.a 的本地主机配置在我的生产服务器上没有意义(
和 facePalm 我没有意识到这将阻止 bootstrap/cache 文件夹上传(就像git一样,eb cli忽略了空文件夹(。
所以,当我晚上开始部署时,部署本来是要崩溃的。
因此,现在我刚刚放置了空地持有人(Say( .gitkeek 文件 bootstrap/cache 。部署再次工作:)
(尽管问题是如此简单我,我在Bootstrap中手动创建了CACHE文件夹。
在运行了作曲家更新后,也可以尝试一下:
php artisan config:clear
在非高架模式下使用Windows 10上的CMDER(非ADMIN(。命令PHP手工艺缓存:Clear对我不起作用。文件夹引导/缓存不存在。我创建了该文件夹,并从Bootstrap和Bootstrap/Cache文件夹中删除了ReadOnly。作曲家安装和作曲家更新现在正在工作。
sudo chmod -R ug+rwx storage bootstrap/cache
希望这将解决问题。
它适合我在项目文件夹中运行
sudo chmod -R 777 bootstrap/cache
比运行
composer update
比运行
cache:clear
- 首先确保
bootstrap/cache
DIR如果不创建新的DIRmkdir -p bootstrap/cache/
- 然后运行
php artisan config:cache
简单。有一些应用程序可以阻止目录。例如Google Drive同步器,一个驱动程序同步器或使用Windows Explorer的任何其他应用程序。
删除缓存文件夹。再次创建。
尝试在项目root目录中执行以下命令
composer update
然后做
composer dumpautoload
这将避免与缓存文件混乱的必要性这可能会导致全新的问题
我不想像我以前对此做错了什么,而与那个现金的游戏没有任何游戏。但是正如它声称的那样,内部/bootstrapp中没有"缓存"文件夹。必须手动创建它。现在,一切都可以再次摇滚
我必须创建这五个文件夹才能再次运行工匠。
mkdir bootstrap/cache
mkdir storage/framework
mkdir storage/framework/cache
mkdir storage/framework/views
mkdir storage/framework/sessions
在这个相关问题中找到答案:"请提供有效的缓存路径"。Laravel中的错误
在我的情况下,我发现我的项目中的bootstrap/cache
在新鲜的克隆期间缺少。
重新添加缓存目录手动解决了我的问题。
然后运行composer install
现在工作正常。
OS:linux ubuntu
如果您使用的是Docker,也可以尝试以下操作:
services:
php:
restart: always
container_name: app-php
user: 'www-data:www-data'
volumes:
- ./:/var/www/html # synchronous
和开放端子
sudo chown -R $USER:$USER <your_project>
现在尝试以下尝试:
docker exec -it <your_container_name> /bin/bash
chown -R www-data:www-data bootstrap/
chown -R www-data:www-data storage/
ls -l # You are see folders/files USER/GROUP
php artisan cache:clear # success
php artisan route:clear # success
composer dump-autoload # success
如果Web服务器(例如 Apache 或 nginx (被用作前端解决方案是使Web服务器组拥有的目录bootstrap/cache
。对于 nginx :
$ sudo chgrp -R nginx bootstrap/cache