2016-05-09 110 views
1

我的Ubuntu 14.04和Laravel 5.1應用程序出現問題。'無法打開流:權限被拒絕'錯誤 - Laravel 5.1

當我的應用程序要登錄我得到這個錯誤:

未捕獲UnexpectedValueException:數據流或文件存儲/日誌/ L無法打開:未能打開流:權限在/ var否認/www/releases/20160426/booking_server/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87\nStack追蹤:\ n#0 ........繼續

我找到了這個解決方案:

sudo php artisan cache:clear 

sudo chmod -R 777 storage 

sudo composer dump-autoload 

但問題在於它只是暫時的。這個問題每天都會回來,我總是也要這樣做。

我能做些什麼來阻止這種情況每天發生?

PD:我有日常日誌,但如果可能的話,我想保持這種方式。

+0

如何創建每日日誌?這聽起來像也許是根作業或類似的根運行? –

+0

真的我不知道這一切都是由Laravel完成的。我只是把app.php'log'=>'daily' –

+0

誰擁有laravel目錄?根?您應該將其切換到Web服務器組,並將您的用戶添加到該組中 – James

回答

1

看起來他們已經在這裏處理了similar issue。你有手動運行或通過cron運行的任何工匠命令嗎?如果是這樣,修復它,讓他們作爲您的網絡用戶運行可能會有所幫助。

如果不是這樣,我真的覺得你最容易應用的解決方案這一套是this one

sudo setfacl -R -m u:www-data:7 /full/path/to/storage 

如果該命令不工作我挖出了一個可能的替代形式:

setfacl -d -m g:www-data:rw /full/path/to/laravel/storage/logs 

setfacl並不像應該那樣受歡迎,它確實是設置Web服務器權限的最佳方法之一。

3

不建議在服務器世界可寫(chmod 777)上建立一個目錄。 設置權限,像這樣,

sudo chgrp -R www-data storage bootstrap/cache 
sudo chmod -R ug+rwx storage bootstrap/cache 

(假設web服務器下組www數據運行)請參閱本:https://laracasts.com/discuss/channels/general-discussion/laravel-framework-file-permission-security

關於你的問題: 好像有一個進程在運行,創造了每天以root權限登錄文件。你確定沒有相同的cron設置嗎?

如果不是,請在storage/logs目錄中運行ls -l,並在此粘貼輸出。 (在手動更改權限之前執行此操作)

相關問題