ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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)效果很好!但是在输入第一行时它仍然给我错误。谁能解释为什么?

当我更改顺序(路由:清除,配置:清除,然后缓存:清除)时,它对我有用。
如果建议的解决方案都不适合您,请使用 sudo。 ;)
sudo -u www-data php artisan cache:clear
老实说,每次都是一个问题……我厌倦了这个问题……我有一整页关于如何解决这个问题的笔记,但似乎列表越来越长……这次周围我根本无法修复它..删除所有缓存文件,创建所有文件夹,尝试停止,尝试重新加载配置,尝试在管理员中打开终端,尝试切换我的缓存驱动程序.. 尝试了一切,这个时间它只是不会做存储链接,太烦人了

K
Kaz

如果 (storage/framework/cache/data) 下不存在 data 目录,则会出现此错误。

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

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


就在现场!我已经完成了你的回答
我有 storage/framework/cache/data,但仍然收到此消息。
@JayBienvenu 无论如何它应该在没有数据目录的情况下工作 - 只有 storage/framework/cache 这个路径必须已经存在(至少对于较新的 Laravel 版本 5.7+) - 检查您是否没有覆盖默认存储路径,如果没有,请检查您的缓存文件夹对 webserver/php 有足够的权限;假设默认 FileStore 缓存 - 问题可能发生在 vendor/laravel/framework/src/Illuminate/Cache/FileStore.php - 方法 flush() - 您可以从那里开始调试 :)
@JayBienvenu,试试这个stackoverflow.com/a/54442312/2140408
仍然有这个错误......太烦人了......基本上尝试了我针对这个错误的一长串可能的解决方案中的所有内容..
M
Mahdi Bashirpour

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

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

然后运行 php artisan cache:clear


你节省了我的时间。 :)
@SumonMahmud 很高兴听到!
多亏了你,经过很多回答后,我才能解决这个问题。谢谢
@NipunTharuksha 没有问题!
先生,你配得上MVP。将我的项目移动到另一个目录,另一个名称,顺便说一句,gitlab 上的另一个组+另一个 repo 名称以这个问题结束。你解决了这个!谢谢 !
M
Martin Cup

打电话

php artisan config:cache 

php artisan cache:clear

解决了这个问题。


哦,原来如此。我移动了项目的目录并运行 cache:clear 试图清除它无权访问的旧路径的缓存(实际上文件夹不存在)。谢谢!
这是正确的答案。你无法清除你没有的东西。
那是正确的答案,不幸的是它甚至发生在“php artisan optimize:clear”
M
MBT

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

php artisan cache:clear

在 /application/storage/framework/cache 中添加了数据文件夹及其工作。谢谢!
R
Raymond

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

第一次尝试:

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

选项 2:

如果“storage/framework/cache/”中有“data”文件夹。删除那里的所有现有文件夹。

然后最后,运行这个:

php artisan cache:clear

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


很高兴听到@KimTormes
最后这对我有用..谢谢,+1 投票!
你是最棒的
谢谢@ChristopherKikoti
感谢@ahmednawazbutt,如果此解决方案可以帮助您。
S
Saroj Shrestha

调用以下 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


这种方法的问题在于它不断重置为不工作。
@SumitWadhwa我认为这不是问题,如果您使用不同的用户,或者在提取代码时更新权限,那么它可能不起作用,否则应该没问题。相反,如果您不想向当前用户授予权限,您还可以通过将用户添加到组 www-data 的另一种方法,例如:sudo usermod -a -G examplegroup exampleusername,然后您只需向 www-data 授予权限。
A
Abid_niazi_15

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


奇迹般有效!
这似乎是 Laravel 8 与 Homestead 和 Vagrant 的解决方案。我确信它也可以在其他环境中工作,但这对我来说是这两个技巧。其他评论在设置权限时基本上是有效的,但是在执行 ls- l 以查看所有权时,如果一切正常.
无需任何权限更改即可完美地为我工作,谢谢!我只是先运行“php artisan config:cache”,然后我能够成功运行“php artisan cache:clear”。
T
Thomas Jones

删除并重新添加 ./storage/framework/cache/data 文件夹对我有用。


R
Ranjan Fadia

您应该使用以下步骤更新权限:

使用命令“whoami”检查用户,然后让输出为“ironman”如果缓存目录中存在“data”文件夹,则运行以下命令

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

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


A
Abdulmatin Sanni

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

我通过运行 php artisan config:clear 修复了 fit,这会自动删除 /bootstrap/cache/config.php 文件。


D
Dharman

我有同样的问题,但注意到如果你运行 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'

删除您不使用的任何不需要的命令。


r
radrow

(对于 MAC 用户)

有时,这意味着当前用户对 storage/framework/cache/data/ 文件夹没有足够的权限。跑

sudo chmod -R ug+rwx 存储/框架/缓存/数据/

然后

php工匠缓存:清除

希望有时它对你有用。


j
jeremykenedy

您可能需要使用 composer dump-autoload 清除自动加载器

如果这不起作用,您可以手动删除以下未跟踪的(通常)文件以清除自动加载器和缓存(如果它们被卡住):

/bootstrap/cache/packages.php

/bootstrap/cache/services.php


我已经在另一个主题上看到了这个答案(从 bootstrap/cache 文件夹中删除包和服务文件),但为什么它应该是一个解决方案?另外,删除它们或使用转储自动加载后没有任何变化。
如果自动加载器被不想要的缓存配置设置(例如数据库连接)卡住,您可能会进入无法清除的地方。
S
Step29

就我而言,问题是我在 .env 中有“CACHE_DRIVER=memcached”,但没有安装 memcached。切换到文件驱动程序或安装 memcached 为我解决了这个问题。


S
Skywalker

删除以下所有子文件夹:

storage/framework/cache/data/

S
Scott Brown

对于 Windows 上的 Laravel Homestead:

在您的 .env 文件中,将您的 CACHE_DRIVERfile 更改为 memcached

运行 php artisan cache:clear


d
daiki.n

这不能解决吗?

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

P
Pixelprotagonist

在我的 vagrant/homestead 虚拟机上遇到了同样的问题。该线程中的所有其他内容均无济于事。

解决方案是 vagrant reload --provision


h
habib

授予存储目录 775 权限为我解决了这个问题。

sudo chmod -R 775 storage

Y
Yeasin Sheikh

我正在 Homestead 运行我的项目。

我的环境:

Ubuntu1~20.04+ Laravel 6.20.26

我的输出

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

显示真实的致命信息

编辑 src/Illuminate/Filesystem/Filesystem.php 598:14 原始代码:

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

调试代码

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

然后重新执行 php artisan cache:clear 输出改变了:

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

然后,我只解决 Text file busy


T
Tanzeela Yousuf

得到同样的错误。尝试在相关文件夹中授予 chmod 777 权限


这已经讨论过了,想法是不给 777 权限
R
Rishi Ranjan

我的猜测是您有权限/所有权问题。正确设置权限或手动递归删除缓存文件夹并重新创建它:

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

M
Martin Adiputra

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


我真的不想在我的项目中使用 777。我唯一需要它的时候是通过浏览器访问公用文件夹,但是因为我可以通过使用 localhost:8000 创建一个服务来使用我的项目,所以它让我避免了 777。而且 chown www-data 不起作用
不在您的所有项目中。只是存储文件夹。并 chown 其 www-data:www-data 而不是 user:www-data。去尝试一下
即使在存储文件夹上,也有很多帖子说即使在单个文件夹上也不要使用 777,出于安全措施,他们也有充分的理由......是的,用户:www-data 是我尝试过的:/
或者你可以 775 许可。
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

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


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

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅