Laravel在CentOS上的权限问题

问题描述 投票:19回答:4

我已经克隆了一个laravel repo到我的CentOS 7盒子。当我尝试运行它时,我得到500错误,没有显示任何内容。

所以我查看了/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命令,这些命令似乎将日志添加到日志文件中......

I already read/tried:

linux apache laravel permissions centos
4个回答
56
投票

Turns out the issue is with selinux

I found this answer,解决了我的问题。

通过使用命令关闭selinux证明这是问题

setenforce 0

这应该允许写入,但是你已经关闭了服务器范围内增加的安全性。那很糟。转回SELinux

setenforce 1

然后最后使用SELinux允许使用此命令写入文件

chcon -R -t httpd_sys_rw_content_t storage

你要走了!


2
投票

我需要对SELinux进行更多调整,而不仅仅是针对storage。特别是config dir可以在Laravel bootstrapping上解决这个问题。

如果你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(/.*)?" sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/site/laravel/config(/.*)?" restorecon -Rv /var/www/site/


1
投票

在我的情况下,它是另一个unix用户,所以这个工作:

chown -R php-fpm:php-fpm storage

0
投票

将此应用于整个项目。

chcon -R -t httpd_sys_rw_content_t project_folder
© www.soinside.com 2019 - 2024. All rights reserved.