CentOs 7上的Laravel权限被拒绝错误



我刚刚安装了带有httpd、PHP 7.3和MariaDB的CentOs 7。我用以下配置了虚拟主机:

<VirtualHost *:80>
ServerName tenancy
DocumentRoot /var/www/vhosts/tenancy/public
</VirtualHost>

我让应用程序显示默认的laravel欢迎页面,但与数据库交互的每个页面都有SQLSTATE[HY000] [2002] Permission denied (SQL: select * from tenant_modules where (tenant_id = 28))

而对于每个api调用,我都得到了file_put_contents(/var/www/vhosts/tenancy/storage/framework/cache/data/44/d1/44d142505dd1a3b497197e2f459d2aec779e9ed6): failed to open stream: Permission denied

我已经将www文件夹的权限设置为777 -R,甚至做了chcon -R -t httpd_sys_rw_content_t -R varwww,但仍然没有任何更改。此外,我还编写了一个php函数来测试mysql-ext,它很有效。

但当我运行php artisan serve时,它运行得很好。你知道解决方案是什么吗?

这看起来像是一个权限问题。我怀疑您的Apache用户没有在Laravel应用程序文件夹中读写的权限。

我不确定CentOs上的Apache用户/组是什么。我假设是www-data,请根据需要更改。

免责声明:这在我的机器(Debian(上有效,但可能有一些更好的方法来设置你的Laravel应用程序权限。欢迎反馈。


  1. 将您的用户添加到www数据组:

    sudo usermod -aG www-data youruser

  2. 更改您的项目用户和组所有权:

    sudo chown -R youruser:www-data /var/www/your-project/

  3. 将您的项目文件权限更改为664:

    sudo find /var/www/your-project/ -type f -exec chmod 664 {} ;

  4. 将您的项目目录权限更改为775:

    sudo find /var/www/your-project/ -type d -exec chmod 775 {} ;

  5. 设置ACL权限以确保Web服务器创建的新文件具有正确的权限:

    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/bootstrap/cache/
    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/storage/logs/
    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/storage/framework/
    sudo setfacl -Rdm g:www-data:rw /var/www/your-project/storage/app/
    

相关内容

最新更新