为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel - 不断收到日志和框架数据缓存错误

Laravel - 不断收到日志和框架数据缓存错误

PHP
白衣染霜花 2023-08-19 17:35:51
我在 Homestead 环境中使用 Laravel 6.x,最近当我尝试通过 Angular 前端登录时出现了一些奇怪的错误 - 一旦它到达登录端点,它就会给我一些奇怪的错误(见下文)The stream or file "/home/vagrant/code/abc-backend/storage/logs/laravel-2020-07-23.log" could not be opened: failed to open stream: Permission denied由于某种原因,上面的文件不存在(存在其他日期的其他日志文件,但不存在 7 月 23 日的日志文件)。然后我手动创建了该文件,如下所示并将其 chmod 为 777:touch storage/logs/laravel-2020-07-23.log chmod 777 storage/logs/laravel-2020-07-23.log当我重新加载页面时,之前的错误已经消失,但现在出现以下错误:file_put_contents(/home/vagrant/code/abc-backend/storage/framework/cache/data/1c/6e/1c6ea8378a1030f85a05f4cb2262de1e2164efa6): failed to open stream: No such file or directory",我还尝试了以下方法,但没有感到高兴:chown -R vagrant:www-data /home/vagrant/code/abc-backend/storagechmod -R g+w /home/vagrant/code/abc-backend/storage我已经尝试了很多方法来php artisan尝试修复这些错误,包括 php artisan cache:clear毫无乐趣地运行命令 - 其他人可以让我深入了解为什么我同时收到日志文件错误和缓存/数据错误以及修复它们的最佳方法两个都?如果您需要有关我的设置的更多信息,请告诉我以提供帮助。
查看完整描述

5 回答

?
www说

TA贡献1775条经验 获得超8个赞

你用什么作为网络服务器?nginx 还是阿帕奇?

如果您使用的是 nginx,则需要更改存储文件夹的组,如下所示。

chown -R vagrant:www-data storage

如果您使用的是apache,则需要更改存储文件夹的组,如下所示。

chown -R vagrant:apache storage

或者请这样做。(不推荐)

chmod -R 777 storage


查看完整回答
反对 回复 2023-08-19
?
青春有我

TA贡献1784条经验 获得超8个赞

我通常对权限和所有权所做的事情是这样的:

sudo chown -R ubuntu:www-data /var/www/project
sudo chmod -R ug+rwx storage bootstrap/cache .git
sudo find . -type f -exec chmod 664 {} \;
sudo find . -type d -exec chmod 775 {} \;

话虽如此,听起来您的网络服务器在创建日志文件时遇到了问题。

要对此进行测试:

  • 有可靠的重现步骤(所以你会得到错误)

  • sudo chown -R www-data:www-data /home/vagrant/code/abc-backend/storage

  • 重新测试

如果这有效,您有一些选择:

  • 就这样吧,工作完成了。请注意,将来可能会出现如下所示的其他情况。

  • 调查进一步的问题:如果您决定实际上,sudo chown -R www-data:www-data /home/vagrant/code/abc-backend您可能会在某个时候遇到访问问题,其中作为一个用户(比方说vagrant)运行命令会生成应该可由另一个用户(比方说www-data)访问的文件。这些可以是:git pullcomposer install、 cron 作业,也可能是其他作业。但这更有可能发生在协作环境中,而不是宅基地中。


查看完整回答
反对 回复 2023-08-19
?
桃花长相依

TA贡献1860条经验 获得超8个赞

storage和目录中的目录bootstrap/cache应该可由您的 Web 服务器写入,否则 Laravel 将无法运行。

你有没有尝试过:

chmod -R o+w /home/vagrant/code/abc-backend/storage

?

如果还是不行,您可能需要检查 /home/vagrant/code 的内容,看看ls -al谁拥有这些文件,并使用chown它们将其修改为预期的 Web 用户。


查看完整回答
反对 回复 2023-08-19
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

我认为问题是在cache:clear之后权限不会保留到子文件夹(因为该命令是由vagrant用户运行的,而不是apache)。缓存使用了很多子文件夹,它们似乎由 vagrant 所有(包括用户和组),因此 apache(和 php)无法在那里写入。

反而:

chown -R vagrant:www-data /home/vagrant/code/abc-backend/storage
chmod -R g+w /home/vagrant/code/abc-backend/storage

尝试这个:

chown -R vagrant:www-data /home/vagrant/code/abc-backend/storage
chmod -R g+sw /home/vagrant/code/abc-backend/storage

+s设置粘滞位,以便在该路径下创建的任何新文件夹或文件将自动归同一组(在本例中为 www-data)所有。


查看完整回答
反对 回复 2023-08-19
?
翻阅古今

TA贡献1780条经验 获得超5个赞

你能尝试一下吗

folders:
- map: ~/Sites
  to: /home/vagrant/code
  options:
    mount_options: ['dmode=777','fmode=777']


查看完整回答
反对 回复 2023-08-19
  • 5 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信