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

我在 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/storage

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

我已经尝试了很多方法来php artisan尝试修复这些错误,包括 php artisan cache:clear毫无乐趣地运行命令 - 其他人可以让我深入了解为什么我同时收到日志文件错误和缓存/数据错误以及修复它们的最佳方法两个都?

如果您需要有关我的设置的更多信息,请告诉我以提供帮助。


白衣染霜花
浏览 203回答 5
5回答

www说

你用什么作为网络服务器?nginx 还是阿帕奇?如果您使用的是 nginx,则需要更改存储文件夹的组,如下所示。chown -R vagrant:www-data storage如果您使用的是apache,则需要更改存储文件夹的组,如下所示。chown -R vagrant:apache storage或者请这样做。(不推荐)chmod -R 777 storage

青春有我

我通常对权限和所有权所做的事情是这样的: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 pull、composer install、 cron 作业,也可能是其他作业。但这更有可能发生在协作环境中,而不是宅基地中。

桃花长相依

storage和目录中的目录bootstrap/cache应该可由您的 Web 服务器写入,否则 Laravel 将无法运行。你有没有尝试过:chmod -R o+w /home/vagrant/code/abc-backend/storage?如果还是不行,您可能需要检查 /home/vagrant/code 的内容,看看ls -al谁拥有这些文件,并使用chown它们将其修改为预期的 Web 用户。

qq_花开花谢_0

我认为问题是在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)所有。

翻阅古今

你能尝试一下吗folders: - map: ~/Sites   to: /home/vagrant/code   options:     mount_options: ['dmode=777','fmode=777']
打开App,查看更多内容
随时随地看视频慕课网APP