php 无法打开流或文件“/storage/logs/laravel.log”:无法打开流:拒绝许可

a2mppw5e  于 2023-06-21  发布在  PHP
关注(0)|答案(3)|浏览(177)

当我在CentOS服务器上导航到Laravel应用程序时,它给出HTTP ERROR 500

所以,当我检查我的服务器错误日志,它说这个错误

PHP Fatal error:  Uncaught UnexpectedValueException: The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107\nStack trace:\n#0

我已经为存储和引导目录设置了777权限。
这个Laravel应用程序在另一个服务器上运行良好。有什么大不了的?

gojuced7

gojuced71#

可以通过禁用SE-Linux修复此错误。
通过键入以下命令检查是否已启用...

$ sestatus

所以,通过键入禁用它...

# setenforce 0

据说需要重新启动系统才能使更改生效。
然而,对我来说,重新启动Apache就足够了,并修复了问题:-)
希望这有帮助!

6ovsh4lw

6ovsh4lw2#

如果你的应用程序是laravel并且你使用sail,那么在.env文件的末尾添加这些行:

WWWGROUP=1000
WWWUSER=1000

我知道现在回答已经晚了,但也许对其他人有帮助。

wgeznvg7

wgeznvg73#

我用的是Ubuntu 22.04。如果您不想禁用SE Linux,解决方案是:SSH到Docker容器:docker exec -it app_name-laravel.test-1 /bin/bash将storage/framework和storage/logs的所有者更改为sail而不是www-data

chown -R sail:sail storage/framework
chown -R sail:sail storage/logs

如果仍然不起作用,请尝试将htop安装到docker容器中。运行htop,找到/var/www/artisan serve的用户。然后重复上面的命令,但使用该用户,而不是sail。祝你好运!

更新

或者更好的解决方案。在docker中为root和user创建一个组(我的是sail):

groupadd sailroot

然后将root和sail添加到组中:

usermod -a -G sailroot sail
usermod -a -G sailroot root

将存储日志和框架的组所有者更改为组:

chown root:sailroot -R storage/framework

将文件权限更改为775:

chmod 775 -R storage/framework

这样,你可以使用本地安装的php使用php artisan serve,或者用docker使用sail。记住将用户留给root,并将组sailroot(或任何您命名的名称)

相关问题