我已经克隆了一个laravel repo到我的CentOS 7机器上。当我试图运行它时,我得到了一个500错误,没有显示任何内容。
因此,我 checkout /var/log/httpd/error_log
,发现出现了一些权限错误:
[Mon May 16 11:39:32.996441 2016] [:error] [pid 2434] [client 104.156.67.195:39136] PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/html/MYSITE/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/html/MYSITE/bootstrap/cache/compiled.php:13701
Stack trace:
# 0 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13635): Monolog\\Handler\\StreamHandler->write(Array)
# 1 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13396): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)
# 2 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13494): Monolog\\Logger->addRecord(400, Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
# 3 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13189): Monolog\\Logger->error(Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
# 4 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13160): Illuminate\\Log\\Writer->writeLog('error', Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
# in /var/www/html/MYSITE/bootstrap/cache/compiled.php on line 13701
我已经做了以下工作来尝试克服这些问题:
chmod -R 775 storage
chmod -R 775 vendor
chown -R apache:apache storage
所以它现在显示为这样:
-rwxrwxr-x. 1 apache apache 2156 May 16 11:41 storage/logs/laravel.log
但这并不管用。
有趣的是,我之前错误地输入了一些artisan
命令,这些命令似乎将日志添加到了日志文件中...
6条答案
按热度按时间mw3dktmi1#
原来问题出在
selinux
上I found this answer,这解决了我的问题。
通过使用以下命令关闭
selinux
来证明这就是问题所在这应该允许写入,但是您已经关闭了服务器范围的附加安全性。这很糟糕。
最后,使用SELinux允许通过以下命令写入文件
你可以走了!
6vl6ewon2#
我需要对SELinux做更多的调整,而不仅仅是
storage
。特别是config
目录可以让你在Laravel引导上遇到这个问题。如果你
sudo setenforce permissive
和它的工作,然后把它转回来sudo setenforce enforcing
,然后按照下面的。SELinux laravel安装程序:
对于
config
,您可能不需要以下代码,但我需要。除非需要,否则不运行此代码可能是最安全的:sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/config(/.*)?"
然后在进行方向调整后重置:
restorecon -Rv /var/www/site/
lo8azlld3#
试试这些对我有用的...
mqxuamgl4#
在我的例子中,它是另一个unix用户,所以这一个工作:
a0zr77ik5#
cd [大文件夹]
wgx48brx6#
在CentOS 7上,我遇到了类似的权限问题。对我有效的解决方案是:
将用户centos添加到apache组
将用户apache添加到组centos
重新启动httpd
最后一行是至关重要的,否则用户apache将不会意识到它现在也在组centos!
与用户apache注销并再次登录相同。