ChatGPT解决这个技术问题 Extra ChatGPT

Laravel showing "Failed to clear cache. Make sure you have the appropriate permissions"

Laravel was displaying to me "Access denied for user 'homestead'@'localhost' (using password: YES)". One solution for this was clearing the cache and the config cache stored, all this with these three commands:

php artisan cache:clear
php artisan config:clear
php artisan config:cache

After php artisan cache:clear, terminal says:

Failed to clear cache. Make sure you have the appropriate permissions. (with red background)

Doing the second and third code (php artisan config:clear and php artisan config:cache) works fine! But it still gives me the error when typing the first line. Can anyone explain why?

It worked for me when I changed the sequence (route:clear, config:clear, then cache:clear).
Use sudo if none of the suggested solutions work for you. ;)
sudo -u www-data php artisan cache:clear
This is honestly a problem every single time... im so tired of this problem... i have like a full page of notes on how to fix this, but it seems like the list is getting longer and longer... this time around i cant fix it at all.. deleted all cached files, created all the folders, tried to halt, tried to reload provision, tried to open terminal in administrator, tried to switch my cache drivers.... tried it all, this time it just wount do the storage link, so annoying

K
Kaz

If the data directory doesn't exist under (storage/framework/cache/data), then you will have this error.

This data directory doesn't exist by default on a fresh/new installation.

Creating the data directory manually at (storage/framework/cache) should fix this issue.


Right on the spot! I'm complete with your answer
I have storage/framework/cache/data and am still getting this message.
@JayBienvenu It should work without the data directory anyway - only storage/framework/cache this path must already exist (at least for newer Laravel versions 5.7+) - check if you are not overriding the default storage path and if not, check if your cache folder has sufficient permissions for webserver/php ; assuming default FileStore cache - the issue is probably happening in vendor/laravel/framework/src/Illuminate/Cache/FileStore.php - method flush() - you can start your debugging from there :)
@JayBienvenu, try this stackoverflow.com/a/54442312/2140408
Still having this error too... soooooo annoying... tried basically everything in my long list of possible solutions to this error..
M
Mahdi Bashirpour

Try deleting these cached files under bootstrap folder:

/bootstrap/cache/packages.php
/bootstrap/cache/services.php
/bootstrap/cache/config.php

Then run php artisan cache:clear


you save my time. :)
@SumonMahmud glad to hear!
after going through lot of answer thanks to you I was able to fix this. Thanks
@NipunTharuksha no probs!
You Sir deserves the MVP. Moved my project to another directory, another name and btw another group+another repo name on gitlab ended with this problem. You solved this ! thanks !
M
Martin Cup

Calling

php artisan config:cache 

before

php artisan cache:clear

fixed the issue.


Oh, that was it. I moved project's directory and running cache:clear was trying to clear the cache at old path which it didn't have access to (actually folder did not exist). Thanks!
This is the right answer. You can't clear what you don't have.
Thats the right answer, unfortunate that it even happends with ´php artisan optimize:clear´
M
MBT

Just only add folder named data in storage/framework/cache/ and try:

php artisan cache:clear

added data folder in /application/storage/framework/cache, and its working. Thank you!
R
Raymond

https://i.stack.imgur.com/hMopa.png

First try:

Check if there is a "data" folder inside "storage/framework/cache/". If there is not, then create it manually. (create a new folder with name "data")

Option 2:

If there is a "data" folder inside "storage/framework/cache/". Remove ALL existing folders inside there.

Then final, running this:

php artisan cache:clear

This should fix this issue: "Failed to clear cache. Make sure you have the appropriate permissions."


glad to hear @KimTormes
Finally this worked for me.. Thanks, +1 up vote!
you are the best
thanks @ChristopherKikoti
thanks @ahmednawazbutt if this solution could help you.
S
Saroj Shrestha

Calling the following 4 commands should fix most of the permission issues on laravel.

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache

Basically, chown -R $USER:www-data what this does is it set current user $USER as owner and www-data as group and chmod -R 775 gives 7 to user,7 to group and 5 to other.

#PS: You need to run above command from the laravel project directory, else, you need to provide full path like /var/www/project_name/storage


the problem with this approach is that it keeps resetting to not-working.
@SumitWadhwa I don't think that's a problem, with the approach, let's say if you go with different user, or updated the permission while pulling code, then it might not work, else it should be fine. Instead, if you don't want to give permissions to current user, you could also another approach by adding user to group www-data, like: sudo usermod -a -G examplegroup exampleusername, and you just have to give permissions to www-data thereafter.
A
Abid_niazi_15

In Laravel 8 I solved my issue by first running composer dump-autoload and then used php artisan config:cache


Works like a charm!
This appears to be the solution for Laravel 8 with Homestead and Vagrant. I'm sure it works in other environments as well, but this did the trick for me with these two. The other comments are largely valid when it comes to setting permissions however when doing ls- l to see ownership if everything appears correct this step of regenerating autoload files appears to be the quickest way to flush out anything wonky that is too hard to get eyes into.
Worked perfectly for me without requiring any permission changes, thanks! I just ran "php artisan config:cache" first and then I was able to successfully run "php artisan cache:clear".
T
Thomas Jones

Deleting and adding back the ./storage/framework/cache/data folder worked for me.


R
Ranjan Fadia

You should update the permission using the below steps:

Check user using command "whoami" then let output is "ironman" Run below command if "data" folder exists in the cache directory

sudo chown -R ironman:ironman storage/framework/cache/data/

https://i.stack.imgur.com/A2wZ7.png


A
Abdulmatin Sanni

I ran my project in a docker container, then later tried accessing it via laragon, I had similar issue, this was due to compiled configurations in /bootstrap/cache/config.php.

I fixed fit by running php artisan config:clear, this deletes the /bootstrap/cache/config.php file automatically.


D
Dharman

I had the same problem but noticed if you run php artisan config:clear it also by default runs cache:clear right after it so when you run it again there is not cache in it and gives that error. you only need to run php artisan config:clear. I am not sure why cache:clear fails when its ran alone but running the config:clear is a good alternative.

Here is a helpful alias i use to clear everything in the app.

laraclear='php artisan config:cache && php artisan config:clear && php artisan view:clear && php artisan route:clear && php artisan telescope:clear && php artisan debugbar:clear'

Remove any unwanted commands that you do not use in it.


r
radrow

(For MAC Users)

Sometimes, it means current user don't have sufficient permission to the storage/framework/cache/data/ folder. Run

sudo chmod -R ug+rwx storage/framework/cache/data/

then

php artisan cache:clear

Hope sometimes it work for you.


j
jeremykenedy

You may need to clear the autoloader with composer dump-autoload

If that doesn't work you can manually remove the following non-tracked (usually) files to clear the autoloader and cache if they get jammed up:

/bootstrap/cache/packages.php

/bootstrap/cache/services.php


I've seen this answer (of deleting both packages and services files from bootstrap/cache folder) on another topic, but why should it be a resolution? Plus, there was no changes after removing them or using dump-autoload.
If the autoloader gets jammed up with cached configuration settings that are not what you want such as the DB connections, you can get into a place where they cannot clear.
S
Step29

In my case the problem was I had 'CACHE_DRIVER=memcached' in .env but didn't have memcached installed. Switching to the file driver or installing memcached fixed the problem for me.


S
Skywalker

Delete all subfolders under:

storage/framework/cache/data/

S
Scott Brown

For Laravel Homestead on Windows:

In your .env file, change your CACHE_DRIVER from file to memcached.

Run php artisan cache:clear.


d
daiki.n

Can't this solve it?

$php artisan optimize:clear
Compiled views cleared!
Application cache cleared!
Route cache cleared!
Configuration cache cleared!
Compiled services and packages files removed!

P
Pixelprotagonist

Had the same problem on my vagrant/homestead VM. All the other things in this thread didn't help.

The solution was vagrant reload --provision


h
habib

Giving 775 permission to the storage directory solved this problem for me.

sudo chmod -R 775 storage

Y
Yeasin Sheikh

I am running my project in Homestead.

My environment :

Ubuntu1~20.04+ Laravel 6.20.26

My output

https://i.stack.imgur.com/mYMXN.png

display real fatal info

Edit src/Illuminate/Filesystem/Filesystem.php 598:14 original code:

if (! $preserve) {
    @rmdir($directory);
}

debug code

if (! $preserve) {
    rmdir($directory);
}

Then re-execute php artisan cache:clear The output changed:

https://i.stack.imgur.com/gVwkM.png

Then, I just resolve Text file busy


T
Tanzeela Yousuf

got the same error. try giving chmod 777 permission in the concerned folder


This was already discussed, the idea is to not give 777 permission
R
Rishi Ranjan

My guess is you have a permission/ownership problem. Either set up the permissions correctly or recursively delete the cache folder manually and re-create it:

sudo rm -Rf storage/framework/cache
mkdir storage/framework/cache

M
Martin Adiputra

maybe you need to chmod 777 -R storage folder. and i think it can also chown www-data:www-data


I'm really trying to NOT use 777 with my projects. The only time I need it is when acessing the public folder via browser, but as I can use my project by creating a serve with localhost:8000, it keeps me avoiding 777. And chown www-data doesn't work
not in your all project. just storage folder. and chown its www-data:www-data not user:www-data. just try it
Even on storage folder, there are a lot of posts saying to not use 777 even on a single folder and they have a good reason too, for security measures... And yes, user:www-data was what I tryed:/
or maybe you can 775 permission.
sudo chown -R www-data:www-data /path/to/your/project/vendor sudo chown -R www-data:www-data /path/to/your/project/storage
D
Devmaleeq

Incase non of these works for you, simply run your php artisan cache:clear command with sudo. e.g. sudo php artisan cache:clear Thank me later~!


关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now