file_put_contents(meta/services.json):无法打开流:权限被拒绝

2022-08-30 06:31:20

我是Laravel的新手。我试图打开,我得到了http://localhost/test/public/

异常处理程序中的错误。

我用谷歌搜索并更改了存储目录的权限,但无济于事。chmod -R 777 app/storage

我更改并访问了该页面,并在异常处理程序中遇到了错误:debug=>trueapp.php

无法打开流或文件“/var/www/html/test/app/storage/logs/laravel.log”:无法打开流:在 /var/www/html/test/bootstrap/compiled 中权限被拒绝.php:8423

然后,我使用命令更改了存储目录的权限,并且“异常处理程序中的错误”错误消失了,并且加载了一个页面。但是在那里我得到了这个:chmod -R 644 app/storage

file_put_contents(/var/www/html/laravel/app/storage/meta/services.json): 无法打开流: 权限被拒绝


答案 1

vsmoraes的建议对我有用:

拉拉维尔>= 5.4

php artisan cache:clear 
chmod -R 775 storage/
composer dump-autoload

拉拉维尔 < 5.4

php artisan cache:clear 
chmod -R 775 app/storage 
composer dump-autoload

答案 2

对于那些在Laravel 5中遇到此问题的人来说,这是一个权限问题,由不同的用户尝试在具有不同权限的文件夹中的同一日志文件中写入而引起的。storage/logs

发生的事情是,您的Laravel配置可能设置为每天记录错误,因此您的Web服务器(Apache / nginx)可能会在默认用户下创建此文件,具体取决于您的环境,它可以类似于OSX或* NIX系统,然后当您可能运行一些工匠命令并得到一些错误时,问题就来了, 所以工匠会写这个文件,但与一个不同的用户,因为PHP在终端上是由一个不同的用户执行的,实际上是你的登录用户,你可以通过运行以下命令来检查它:_wwwwww-data

php -i | grep USER

如果您的登录用户创建了该日志文件,则Web服务器将无法在其中写入错误,反之亦然,因为Laravel默认使用权限写入日志文件,仅允许所有者在其中写入。655

要修复此临时问题,您必须手动为组授予对此文件的权限,以便登录用户和 Web 服务器用户都可以写入该日志文件。664

为了永久避免此问题,您可能需要在目录中创建新文件时设置适当的权限,方法是从该目录中继承权限,此答案 https://unix.stackexchange.com/a/115632 可以帮助您解决这个问题。storage/logs


推荐