Php 拉威尔投掷';引导/缓存目录必须存在且可写';更新后出错
我使用了“composer update”,它更新了一些软件包。在更新过程中,网站仍在运行。但是,在它说“已删除已编译的服务文件”后,网站不会加载,而是说:Php 拉威尔投掷';引导/缓存目录必须存在且可写';更新后出错,php,laravel,laravel-5,composer-php,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”时,网站再次开始工作,直到已编译的服务文件被删除,此时它再次抛出相同的
Exception in ProviderRepository.php line 190:
The bootstrap/cache directory must be present and writable.
最奇怪的是,当我再次运行“composer update”时,网站再次开始工作,直到已编译的服务文件被删除,此时它再次抛出相同的错误。我已经尝试了在出现此错误时应该执行的常规操作(chown-R将所有内容发送给正确的用户/组,chmod分别发送所有文件和文件夹664和775)
我不知道该怎么办,因为错误似乎不“正确”…在您的Laravel目录文件上,运行:
sudo chmod -R 777 bootstrap/cache/
运行composer更新后,请尝试以下操作:
php artisan cache:clear
php artisan config:clear
Short version:如果使用类似于AWS eb cli的方式进行上载,请验证是否正在部署引导/缓存文件夹(不谈论其内容)
我的回答背后的一些背景 我正在使用Amazon Web Services的Elastic Beanstalk来主持我的Laravel项目。由于我刚刚开始使用Laravel,我对它的功能没有太多的了解。两天前,我的新部署由于OP的错误消息而中途崩溃 那天早些时候,我意识到我没有使用
php artisan config:cache
缓存配置以加快速度。我在composer.json的“post-install-cmd”和“post-update-cmd”子句中添加了相同的内容。
我还在.ebignore文件中添加了一条语句,不上传/bootstrap/cache的内容(因为它的内容依赖于环境a.k.a我的本地主机配置在我的生产服务器上没有意义)
facepalm我没有意识到这会阻止引导/缓存文件夹被上传(就像git一样,eb cli会忽略空文件夹)。
因此,当我开始在夜间部署时,部署注定要崩溃。
所以,现在我刚刚在bootstrap/cache中放置了空占位符(比如).gitcept文件。部署又开始工作:)
(虽然问题很简单,但我在ssh和挖掘EBS EC2实例后意识到了原因~.~)如果将web服务器(例如Apache或Nginx)用作前端,则解决方案是使目录
bootstrap/cache
归web服务器组所有。对于Nginx:
$ sudo chgrp -R nginx bootstrap/cache
在windows 10上以非提升模式(非管理员)使用cmder进行Im。 命令php artisan缓存:清除对我不起作用。 文件夹引导/缓存不存在。 我创建了该文件夹,并从引导文件夹和引导/缓存文件夹中删除了readonly。
composer安装和composer更新现在都可以工作。它可以在项目文件夹中运行
sudo chmod -R 777 bootstrap/cache
比跑
composer update
cache:clear
比跑
composer update
cache:clear
希望这能解决问题 解决此错误的最佳方法是: 1.打开项目文件夹 2.移动到引导目录 3.创建名为“缓存”的空文件夹 4.然后执行php artisan缓存:清除
这将确实有效请尝试在项目根目录中执行以下命令
composer update
那就做吧
composer dumpautoload
这将避免混淆缓存文件的必要性
这可能会导致全新的问题在运行composer更新后也可以尝试以下方法:
php artisan cache:clear
php artisan config:clear
我想象不出我以前在这件事上做错了什么,没有一场关于现金结算的游戏是有意义的。但正如它声称的那样,在/bootstrap中没有“缓存”文件夹。必须手动创建它。现在一切又恢复正常了对于我来说,我在引导程序中手动创建了缓存文件夹。
- 首先确保
目录存在(如果不创建新目录)引导/cache
mkdir-p引导/cache/
- 然后运行
php-artisan-config:cache
mkdir-p bootstrap/cache/&&sudo chown-R user bootstrap/cache/
我很确定777'在web服务器上的任何文件夹都不是一个安全方面的好主意。此外,775应该而且已经起作用了。对不起,我不清楚。775在过去工作过。目前我仍然有同样的问题,正如我在原始帖子中所说的,我已经尝试了775'ing和664'ing。问题就在于:我修复了错误所说的应该修复的问题,但我仍然遇到了相同的问题。必须是sudo chmod-R 777 bootstrap
,然后才能正常运行。Waaa可能太晚了,但这是一个简单的解决方案。我忘了告诉你,但是谢谢你!这里有一个警告是恰当的。在生产环境中运行此操作之前,请停止并问问自己是否真的要清除缓存。否则,你可能会像我一样破坏你的应用程序。不工作?我没有一个缓存文件夹在引导文件夹里你实际上救了我的命!此外,如果此解决方案无法立即运行,请检查是否运行了类似于OPCache的程序,您可能需要重新启动PHP-FPM/清除OPCache缓存。:)这不是bootstrap/cashe,而是bootstrap/cache。如果你能告诉我你为什么对我的答案投了反对票,那将是非常感谢的。因为正如我所看到的,它解决了一个特定的问题。