除了資料夾權限是設定成 chmod 777 的指令之外:
chmod -R 777 storage
導致此問題發生的原因還有 SELinux
SELinux導致
觀察主機目前是否有啟動 selinux (CentOS 預設是有啟動 selinux)
getenforce
暫時性的關掉或開啟 selinux
setenforce 0
開啟
setenforce 1
以下步驟請都做:
(一)因為有使用 selinux 而你新增了一些檔案或目錄到「網頁目錄 /var/www/html」,明明檔案就存在,卻無法正常從瀏覽器觀看,這不是 file permission chmod 的問題,是 selinux 檔案 http 存取權限的問題,你只需要用 使用SELinux允許使用此命令寫入文件
在對應資料夾下使用此指令
sudo chcon -R -t httpd_sys_rw_content_t 我的專案名稱/storage
(二)
對網站加入 apache 所有權,在 Laravel 網站的根目錄下執行:
sudo chown -R apache:apache *
<-FTP上傳檔案可能會有使用者權限問題
(三)<-FTP上傳檔案可能會有使用者權限問題
CentOS 對內部檔案的權限管理非常嚴謹,當其他使用者在看網頁時,CentOS 內其實是有一名叫做
apache
的使用者在瀏覽您的網頁目錄,雖然如此但 apache
也不是什麼檔案都能看,僅能觀看httpd 相關權限的檔案而已,在還沒修改網站權限時你可以透過 ls -Z
來取得目前的權限。
但是
httpd_sys_content_t
僅是瀏覽的權限而已,依據 laravel 的安裝說明,bootstrap/cache
及 storage
這兩個資料夾必須要有寫入的權限,所以需再做以下修改:sudo chcon -Rv -t httpd_sys_rw_content_t 網站/storage
sudo chcon -Rv -t httpd_sys_rw_content_t 網站/bootstrap/cache
sudo chmod -R 777 網站/storage
sudo chmod -R 777 網站/bootstrap/cache
沒有留言:
張貼留言