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

156

Laravel向我显示了“Access denied for user 'homestead'@'localhost'(using password: YES)”错误。 解决此问题的方法之一是清除缓存和配置缓存,使用以下三个命令:

php artisan cache:clear

php artisan config:cache

php artisan config:clear


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

在执行php artisan cache:clear之后,终端显示:

无法清除缓存。请确保您具有适当的权限。 (红色背景)

执行第二个和第三个命令 (php artisan config:clearphp artisan config:cache) 没有问题!但是在输入第一行时仍然会出现错误。有人能解释为什么吗?


5
当我改变了顺序(先运行route:clear、config:clear,然后再运行cache:clear)时,它对我起了作用。 - Ihab Shoully
1
如果建议的解决方案都不起作用,使用sudo。 ;) - Shafi
3
sudo -u www-data php artisan cache:clear - doox911
3
这实在是每次都会出现的问题...我已经厌倦了这个问题...我有一页纸的笔记来解决它,但似乎问题越来越多...这一次我根本无法解决它...删除了所有缓存文件,创建了所有文件夹,尝试停止、重新加载提供程序,尝试以管理员身份打开终端,尝试切换我的缓存驱动器...已经尝试了所有方法,这一次它就是不会做存储链接,真的很烦人。 - ii iml0sto1
30个回答

434
如果 (storage/framework/cache/data) 目录下不存在 data 目录,则会出现此错误。
在新安装中,默认情况下没有这个 data 目录。
手动创建位于 (storage/framework/cache) 的 data 目录应该可以解决此问题。

非常准确!我已经完整地回答了您的问题。 - E.Akio
65
我有 storage/framework/cache/data 文件夹,但仍然收到这个错误信息。 - Jay Bienvenu
@JayBienvenu 无论如何都应该可以正常工作,只有 storage/framework/cache 这个路径必须已经存在(至少对于新的 Laravel 版本 5.7+)- 检查您是否没有覆盖默认存储路径,如果没有,请检查您的缓存文件夹是否具有 Web 服务器/PHP 的足够权限;假设默认的 FileStore 缓存 - 问题可能发生在 vendor/laravel/framework/src/Illuminate/Cache/FileStore.php - 方法 flush() - 您可以从那里开始调试 :) - jave.web
1
@JayBienvenu,试试这个 https://dev59.com/eFQK5IYBdhLWcg3wN9ZV#54442312 - Sid
仍然遇到这个错误...太烦人了...尝试了我长长的可能解决方案列表中的基本所有方法来解决这个错误... - ii iml0sto1
当我将 Laravel 5.8 升级到 6 时,遇到了这个问题。解决方案是正确的。 - kodmanyagha

136

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

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

然后运行php artisan cache:clear


7
你节省了我的时间。 :) - Md. Abutaleb
1
@SumonMahmud 很高兴听到这个消息! - Sid
2
经过查看许多答案,感谢您,我终于解决了这个问题。谢谢。 - Nipun Tharuksha
4
您应该得到最有价值玩家 (MVP) 的称号。我将我的项目移动到了另一个目录、另一个名称,而且在GitLab上使用了另一个组和另一个仓库名称,结果出现了问题。您解决了这个问题!谢谢! - Florian Doyen
2
很酷,它正在工作,当您在cpanel上工作且没有终端权限时,这是一个不错的选择。 - dipenparmar12
显示剩余6条评论

62

呼叫

php artisan config:cache 

之前

php artisan cache:clear

修复了问题。


哦,原来是这样。我移动了项目目录并运行了 cache:clear 命令,但它尝试清理旧路径上的缓存,而它没有访问权限(实际上文件夹不存在)。谢谢! - Orkhan Alikhanov
2
这是正确的答案。你不能清除你没有的东西。 - Chuck Le Butt
这是正确的答案,不幸的是,即使使用 ´php artisan optimize:clear´ 也会发生这种情况。 - beeftony
这对我有效。谢谢。 - Memo
什么都对我没用 - Alauddin Afif Cassandra

46

只需在 storage/framework/cache/ 中添加名为data的文件夹,然后尝试:

php artisan cache:clear

1
已在/application/storage/framework/cache中添加了数据文件夹,并且它正在工作。谢谢! - Avinash Raut

44

调用以下4个命令应该可以解决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

基本上,chown -R $USER:www-data 的作用是将当前用户 $USER 设置为所有者,将组设置为 www-data,并且 chmod -R 775 给予7给用户、7给组和5给其他人。

#PS:您需要从Laravel项目目录中运行上述命令,否则,您需要提供完整路径,例如/var/www/project_name/storage。


这种方法的问题在于它不断重置为“不工作”。 - Sumit Wadhwa
@SumitWadhwa 我认为这不是问题,如果你采用不同的用户或在拉取代码时更新了权限,则可能无法正常工作,否则应该没问题。相反,如果您不想给当前用户权限,您也可以通过将用户添加到组“www-data”来采用另一种方法,例如:sudo usermod -a -G examplegroup exampleusername,然后您只需授予www-data权限即可。 - Saroj Shrestha
1
谢谢。在试图修复其他问题时,我将用户和组都设置为www-data,这显然是导致了指定的问题。现在已经解决了。谢谢! - dgo

42

这里输入图片描述

第一步:

检查是否在“storage/framework/cache/”文件夹中有“data”文件夹。 如果没有,则手动创建一个新的名为“data”的文件夹。

选项2:

如果“storage/framework/cache/”文件夹中有“data”文件夹。 删除其中所有已存在的文件夹。

然后最后运行以下命令:

php artisan cache:clear

这应该解决这个问题:“无法清除缓存。确保您拥有适当的权限。”


1
很高兴听到 @KimTormes - Raymond
1
最终这对我有用了.. 谢谢,+1赞! - Christopher Kikoti
1
你是最棒的。 - ahmednawazbutt
1
感谢 @ChristopherKikoti - Raymond
1
感谢@ahmednawazbutt,如果这个解决方案能够帮到你。 - Raymond

21
在Laravel 8中,我通过先运行composer dump-autoload,然后使用php artisan config:cache解决了我的问题。

4
运作得很好! - Ajith Gopi
这似乎是使用Homestead和Vagrant的Laravel 8的解决方案。我相信它在其他环境中也适用,但对于这两个环境,对我来说它起了作用。当设置权限时,其他评论大多是有效的,但是当执行ls- l以查看所有权时,如果一切正常,则重新生成自动加载文件的步骤似乎是清除任何棘手问题的最快方法,因为有些问题难以察觉。 - Jem
对我来说完美地运行,无需更改任何权限,谢谢!我只是先运行了“php artisan config:cache”,然后成功地运行了“php artisan cache:clear”。 - bstonehill
Laravel 5.6也可以工作! - tanteng

9

您需要按照以下步骤更新权限:

  1. 使用命令 "whoami" 检查用户,确保输出是 "ironman"
  2. 如果缓存目录中存在 "data" 文件夹,请运行以下命令

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

这将解决下面的问题enter image description here


1
这是唯一正确的解决方案。其他解决方案在某些情况下可能是正确的。也许这个解决方案可以应用于“storage&bootstrap / cache”。 - Ali Özen
@AliÖzen 谢谢您真诚的评论,您可以点赞支持我的回答。 - Ranjan Fadia
1
这在你无法删除storage/framework/cache/data/目录时有效(我正在使用Sail和L9)!当然,确保将"ironman"替换为第一个命令的输出结果。 - pu4cu
@pu4cu 很高兴得知Laravel 9能正常运行。 - Ranjan Fadia

8

对我而言,删除并重新添加./storage/framework/cache/data文件夹是可行的。


5

删除以下所有子文件夹:

storage/framework/cache/data/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接