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

Php CentOs 7上的Laravel权限被拒绝错误,php,laravel,centos7,Php,Laravel,Centos7,我刚刚用httpd、php7.3和MariaDB安装了centos7。我使用以下配置了virtualhost: <VirtualHost *:80> ServerName tenancy DocumentRoot /var/www/vhosts/tenancy/public </VirtualHost> 我让应用程序显示默认的laravel欢迎页面,但与数据库交互的每个页面都获得了SQLSTATE[HY000][2002]权限拒绝SQL:select*from

我刚刚用httpd、php7.3和MariaDB安装了centos7。我使用以下配置了virtualhost:

<VirtualHost *:80>
  ServerName tenancy
  DocumentRoot /var/www/vhosts/tenancy/public
</VirtualHost>
我让应用程序显示默认的laravel欢迎页面,但与数据库交互的每个页面都获得了SQLSTATE[HY000][2002]权限拒绝SQL:select*from TEANT\U modules,其中TEANT\U id=28

而对于每个api调用,我都会得到文件\u put_contents/var/www/vhosts/tenancy/storage/framework/cache/data/44/d1/44d142505dd1a3b497197e2f459d2aec779e9ed6:无法打开流:权限被拒绝

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


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

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

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

免责声明:这适用于我的机器Debian,但可能有更好的方法来设置您的Laravel应用程序权限。欢迎反馈

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

sudo usermod-aG www数据用户

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

sudo chown-R你的用户:www-data/var/www/your-project/

将项目文件权限更改为664:

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

将项目目录权限更改为775:

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

设置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/
您确定您的用户和组有权在您的Laravel文件夹中读写吗?听起来httpd或www数据用户没有正确的权限。我已将我的用户添加到apache group alreadySure,这意味着您的用户可以读取和写入文件。但是,您的Apache用户似乎没有读写权限。我将发布一个答案,希望它能有所帮助。在实现第3项时,我不断发现-exec缺少参数。CentOs中默认的apache用户/组是apache。不要将用户添加到apache用户组中,请为apache授予访问内容的正确权限。@CrazyMerlin How?@LobsterBaz大多数系统上的Web服务器已经有权访问某个地方来记录错误,以及临时存储文件。它们通常是/var/log和/tmp。您可以在这些位置为您的应用程序创建文件夹,将组更改为Web服务器组检查的任何内容,不要假设…在CentOS上是httpd,在Ubuntu上是www数据。这样做的原因是,您可以轻松地将日志文件添加到logrotate,垃圾收集器将清除任何不再使用的文件。如果你想长期缓存,考虑OPC,MycChank等。我不同意这是Laravel这样做的方式,CaKEPHP也和很多其他框架一样。我不同意的是将用户添加到web用户组,因为这不是正确的方法。我提供了一个有效且不涉及安全问题的解决方案。CentOS对此类问题的要求更严格一些,而Debian则不然。将同一个项目部署到Debian box,它很可能就可以正常工作了。