Press "Enter" to skip to content

Laravel 部署小记

最近做了个简单Laravel应用(版本5.5),这里记录在部署到服务器时,遇到文件权限不够问题。

为了php进程和nginx进程权限出现问题,故共同使用nginx账号。

在部署Laravel时首先更改文件权限

chown nginx:nginx -R laravel-app

这时其实文件权限已经够了。

但是刷新访问依然报文件权限错误

Error in exception handler: The stream or file "/var/www/laravel-app/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel-app/bootstrap/compiled.php:8423

好吧,给storagebootstrap/cache775权限

sudo -u nginx chown -R 775 storage
sudo -u nginx chown -R 775 bootstrap/cache

这下总行了吧。

刷新继续文件权限错误,难道是缓存问题??

清一下缓存和包自动发现

sudo -u nginx php artisan package:discover
sudo -u nginx php artisan config:clear
sudo -u nginx php artisan cache:clear

结果还是没有权限,很是纳闷呢。

查了半天发现原来是 SELinux 搞的鬼,linux系统为 centos 7.6

SELinux 共有三种模式如下:

  • Enforcing:强制模式,依据设定来限制档案资源存取。
  • Permissive:宽容模式,不限制档案资源存取,但仍会依据设定检查并记录相关讯息。
  • Disabled:停用模式,SELinux 已被停用。

默认为强制模式。

看下SELinux状态,设置宽容模式。

sestatus

setenforce Permissive

或者 sudo setenforce 0

问题解决。

参考资料: