SELinux导致Laravel访问不了文件

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

https://baike.baidu.com/item/SELinux/8865268

问题:

错误:”The stream or file “/var/www/html/storage/logs/laravel.log” could not be opened: failed to open stream: Permission denied”

翻译后:“ 无法打开流或文件“ /var/www/html/storage/logs/laravel.log”:打开流失败:权限被拒绝 “

如图选中的是laravel报出的错误

解决:

然后我就给 storage 目录设置777的权限,但是还是没有效果,我就使用万能是的搜索引擎。

找到一篇文章和我的情况一样。

解决办法是禁止用SELinux。

在终端中输入 setenforce 0 关闭SELinux。可以先输入 sestatus 检测是否启用。

据说需要重新启动系统才能使更改生效。

但是,对我来说,重新启动Apache就足够了,并解决了问题。

本文参考于

https://stackoverflow.com/questions/47447864/the-stream-or-file-storage-logs-laravel-log-could-not-be-opened-failed-to-op