[英]Laravel Permission Denied Error on CentOs 7
我剛剛使用 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))
While for every api call, I got 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 function 只是為了測試 mysql 分機並且有效。
但是當我運行php artisan serve
時,它工作正常。 你知道什么是解決方案嗎?
它看起來像一個權限問題。 我懷疑您的 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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.