CentOS上Laravel的权限问题

lbsnaicq  于 2022-11-07  发布在  其他
关注(0)|答案(6)|浏览(201)

我已经克隆了一个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命令,这些命令似乎将日志添加到了日志文件中...

我已阅读/尝试:

mw3dktmi

mw3dktmi1#

原来问题出在selinux

I found this answer,这解决了我的问题。
通过使用以下命令关闭selinux来证明这就是问题所在

setenforce 0

这应该允许写入,但是您已经关闭了服务器范围的附加安全性。这很糟糕。

setenforce 1

最后,使用SELinux允许通过以下命令写入文件

chcon -R -t httpd_sys_rw_content_t storage

你可以走了!

6vl6ewon

6vl6ewon2#

我需要对SELinux做更多的调整,而不仅仅是storage。特别是config目录可以让你在Laravel引导上遇到这个问题。
如果你sudo setenforce permissive和它的工作,然后把它转回来sudo setenforce enforcing,然后按照下面的。

SELinux laravel安装程序:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/storage(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/bootstrap/cache(/.*)?"

对于config,您可能不需要以下代码,但我需要。除非需要,否则不运行此代码可能是最安全的:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/config(/.*)?"
然后在进行方向调整后重置:
restorecon -Rv /var/www/site/

lo8azlld

lo8azlld3#

试试这些对我有用的...

sudo find ./storage -type f -exec chmod 666 {} \;
sudo find ./storage -type d -exec chmod 777 {} \;
mqxuamgl

mqxuamgl4#

在我的例子中,它是另一个unix用户,所以这一个工作:

chown -R php-fpm:php-fpm storage
a0zr77ik

a0zr77ik5#

cd [大文件夹]

chmod 777 storage -R

sudo chcon -t httpd_sys_rw_content_t storage -R

chmod 777 bootstrap

sudo chcon -t httpd_sys_rw_content_t bootstrap -R
wgx48brx

wgx48brx6#

在CentOS 7上,我遇到了类似的权限问题。对我有效的解决方案是:
将用户centos添加到apache组
将用户apache添加到组centos
重新启动httpd
最后一行是至关重要的,否则用户apache将不会意识到它现在也在组centos!
与用户apache注销并再次登录相同。

相关问题