Laravel显示“无法清除缓存。确保您拥有适当的权限”


75

Laravel向我显示“用户'homestead'@'localhost'的访问被拒绝(使用密码:是)”。一种解决方案是使用以下三个命令清除缓存和存储的配置缓存:

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

之后php artisan cache:clear,终端说:

Failed to clear cache. Make sure you have the appropriate permissions. (红色背景)

进行第二个和第三个代码(php artisan config:clearphp artisan config:cache)效果很好!但是在输入第一行时仍然给我错误。谁能解释为什么?


3
当我更改顺序(route:clear,config:clear,然后cache:clear)时,它对我有用。
Ihab Shoully

如果建议的解决方案都不适合您,请使用sudo。;)
MASh

Answers:


245

如果datastorage/framework/cache/data)下的目录不存在,则将出现此错误。

data在全新安装中,默认情况下不存在此目录。

data在(storage/framework/cache)手动创建目录应该可以解决此问题。


就在现场!我已经完成你的回答
E.Akio

19
我已经storage/framework/cache/data并且仍在收到此消息。
Jay Bienvenu

@JayBienvenu无论如何,它都应该在没有数据目录的情况下工作-仅storage/framework/cache此路径必须已经存在(至少对于较新的Laravel 5.7+版本而言)-检查您是否不覆盖默认存储路径,如果不覆盖默认存储路径,请检查您的缓存文件夹是否具有足够的权限对于webserver / php; 假设默认的FileStore缓存-该问题可能发生在vendor/laravel/framework/src/Illuminate/Cache/FileStore.php-方法flush()-您可以从此处开始调试:)
jave.web

70

尝试删除引导文件夹下的这些缓存文件:

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

然后跑 php artisan cache:clear


2
你节省我的时间。:)
美龄阿布·塔勒布

1
@SumonMahmud很高兴听到!
Sid

1
经过很多回答后,感谢您,我能够解决此问题。谢谢
Nipun Tharuksha

1
@NipunTharuksha没有问题!
Sid

3
您先生值得MVP。将我的项目移到另一个目录,另一个名称,然后在gitlab上将另一个组+另一个存储库名称移动到此问题。你解决了这个!谢谢 !
Florian Doyen '02

34

呼唤

php artisan config:cache 

之前

php artisan cache:clear

解决了这个问题。


哦,就是这样。我移动了项目的目录并运行cache:clear试图清除它无法访问的旧路径(实际上文件夹不存在)中的缓存。谢谢!
Orkhan Alikhanov

23

只需添加命名为的文件夹datastorage/framework/cache/然后尝试:

php artisan cache:clear

2

我在docker容器中运行了我的项目,然后尝试通过laragon访问它,我遇到了类似的问题,这是由于中的编译配置所致/bootstrap/cache/config.php

我通过运行来固定大小php artisan config:clear,这会/bootstrap/cache/config.php自动删除文件。


2

在此处输入图片说明

第一次尝试:

检查“存储/框架/缓存/”中是否有“数据”文件夹。如果没有,请手动创建。(创建一个名为“数据”的新文件夹)

选项2:

如果在“存储/框架/缓存/”中有一个“数据”文件夹。删除那里的所有现有文件夹。

然后最后,运行此命令:

php artisan cache:clear

这应该可以解决以下问题:“无法清除缓存。请确保您具有适当的权限。”


1

您可能需要使用以下命令清除自动装带器 composer dump-autoload

如果这样不起作用,则可以手动删除以下未跟踪的(通常)文件,以清除自动装带器并在卡住时进行高速缓存:

/bootstrap/cache/packages.php

/bootstrap/cache/services.php


我已经在另一个主题上看到了这个答案(从bootstrap / cache文件夹中删除软件包和服务文件),但是为什么要解决呢?此外,删除它们或使用dump-autoload之后没有任何更改。
E.Akio

如果自动装带器被您不想要的缓存配置设置(例如数据库连接)卡住,则可以进入无法清除的地方。
jeremykenedy 18/09/18

1

我有同样的问题,但是注意到如果您运行php artisan config:clear,它也会默认运行cache:clear,所以在您再次运行它时,其中没有缓存,并显示该错误。您只需要运行php artisan config:clear。我不确定为什么cache:clear单独运行时会失败,但是运行config:clear是一个很好的选择。

这是我用来清除应用程序中所有内容的有用别名。

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'

删除所有不需要的命令。



0

我的vagrant / homestead VM上出现了相同的问题。该线程中的所有其他内容均无济于事。

解决方案是 vagrant reload --provision


0

如果这些都不适合您,只需使用sudo运行php artisan cache:clear命令即可。例如,sudo php artisan cache:clear 稍后再感谢我!


-1

这不能解决吗?

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

-3

也许您需要chmod 777 -R存储文件夹。而且我认为它也可以添加www-data:www-data


1
我真的想在我的项目中不要使用777。唯一一次我需要它是acessing通过浏览器中的公用文件夹时,但我可以通过创建使用自己的项目中使用本地主机服务:8000,它让我避免777和chown www数据不工作
E.Akio

不在您的所有项目中。只是存储文件夹。并将其www-data:www-data而不是user:www-data。试试看吧
Martin Adiputra

1
即使在存储文件夹上,也有很多帖子说即使在单个文件夹上也不要使用777,并且出于安全性考虑,它们也有充分的理由……是的,user:www-data是我尝试的方法:/
E.Akio

也许您可以775允许。
马丁·阿迪普特拉

sudo chown -R www-data:www-data / path / to / your / project / vendor sudo chown -R www-data:www-data:www-data / path / to / your / project / storage
Martin Adiputra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.