Laravel throws 'The bootstrap/cache directory must be present and writable' error after update

若如初见. 提交于 2020-01-10 11:48:09

问题


I used 'composer update', which updated a few packages. During the updating process the website still functions. However, after it says 'The compiled services file has been removed', the website doesn't load and instead says:

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

The weirdest thing is, when I run 'composer update' again, the website starts to work again, until the compiled services file is removed, at which point it throws the same error again. I have already tried the usual things that should be done when this error appears (chown -R everything to the right user/group and chmod all the files and folders 664 and 775 respectively).

I don't know what to do anymore, as the error doesn't seem 'correct'..


回答1:


Try this after you have run the composer update:

php artisan cache:clear



回答2:


On your Laravel directory file, run:

sudo chmod -R 777 bootstrap/cache/



回答3:


Short version: If uploading using something like AWS eb cli Verify if bootstrap/cache folder (not talking about its contents) is being deployed.


Some background behind my answer

I am using Amazon Web Services' Elastic Beanstalk to host my Laravel project. As I just started using Laravel I do not have much idea about its functioning. Two days back My new deployments were all crashing midway with OP's error message.

Earlier that day, I realised that I was not using

 php artisan config:cache

to cache configurations to make things faster. And I added the same in composer.json's "post-install-cmd" and "post-update-cmd" clauses.
And I also added statement in .ebignore file to not upload the content of /bootstrap/cache (as its content is environment dependent a.k.a my localhost configurations have no meaning on my production server)

And facepalm I did not realise that this will stop the bootstrap/cache folder from being uploaded (as Like git, eb cli ignores empty folders).
So, when I started to deploy at night The deployments were meant to crash.

So, now I have just placed empty-placeholder (say) .gitkeep file in bootstrap/cache. And deployments are working once again :)
(Though the problem was so simple I realised the reason after ssh-ing and digging an EBS EC2 instance for some sweet sleep hours ~.~ )




回答4:


The best way to resolve this error is : 1. Open your project folder 2. Move to the bootstrap directory 3. Create an empty folder named as "cache" 4. Then do php artisan cache: clear This will work for sure




回答5:


Im using cmder on windows 10 in non elevated mode (Non-Admin). command php artisan cache:clear did not work for me. The folder bootstrap/cache did not exist. I created the folder and removed readonly from both bootstrap and bootstrap/cache folder. Both composer install and composer update are working now.




回答6:


it work for me run in project folder

 sudo chmod -R 777 bootstrap/cache

than run

 composer update

than run

 cache:clear



回答7:


sudo chmod -R ug+rwx storage bootstrap/cache

hopefully, this will solve the problem.




回答8:


Try executing the following commands in your project root directory

composer update

then do

composer dumpautoload

this will avoid the necessity of messing with cache files which may lead to whole new sort of issues




回答9:


If a web server (e.g. Apache or Nginx) is being used as a front-end the solution is to make the directory bootstrap/cache owned by web server group. For Nginx:

 $ sudo chgrp -R nginx bootstrap/cache


来源:https://stackoverflow.com/questions/43718391/laravel-throws-the-bootstrap-cache-directory-must-be-present-and-writable-erro

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!