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 \var\www,但仍然没有任何改变。另外,我已经编写了一个 php 函数来测试 mysql ext 并且可以正常工作。


但是当我跑步时php artisan serve,它工作正常。您知道解决方案是什么吗?


胡子哥哥
浏览 115回答 1
1回答

月关宝盒

它看起来像一个权限问题。我怀疑你的 Apache 用户没有权限在你的 Laravel 应用程序文件夹中读写。我不确定 CentOs 上的 Apache 用户/组是什么。我会假设它是www-data,请根据需要更改。免责声明:这适用于我的机器(Debian),但可能有一些更好的方法来设置你的 Laravel 应用程序权限。欢迎反馈。将您的用户添加到 www-data 组:sudo usermod -aG www-data youruser更改您的项目用户和组所有权:sudo chown -R youruser: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 权限以确保网络服务器创建的新文件具有正确的权限: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/
打开App,查看更多内容
随时随地看视频慕课网APP