2016-05-09 11 views
1

私のUbuntu 14.04およびLaravel 5.1アプリケーションに問題があります。私のアプリは、ログインしようとするとき'ストリームを開くことに失敗しました:許可が拒否されました'というエラー - Laravel 5.1

が、私はこのエラーを取得しています:

キャッチされないにUnexpectedValueException:ストリームまたはファイルストレージ/ログ/リットルを開くことができませんでした:/ 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

日次ログはどのように作成するのですか?それは、おそらくcronの仕事や、rootと同様の実行のように聞こえる? –

+0

本当に私はすべてがLaravelによって行われたのか分かりません。私はちょうどapp.phpを置く 'ログ' => '毎日' –

+0

誰がlaravelディレクトリを所有していますか?ルート?あなたはそれをwebserverグループに分けて、そのグループにあなたのユーザを追加するべきです – James

答えて

1

これまでにsimilar issueに取り組んでいるようです。手動で実行したり、cronを実行したりする職人のコマンドはありますか?もしそうなら、それをあなたのWebユーザーとして実行するように修正すれば、おそらく助けになるでしょう。

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 

ない場合は、私は本当にこのセットのうち、あなたのために最も容易に適用できるソリューションがthis oneだと思います

setfaclはあまり人気がありませんが、実際にはウェブサーバーのアクセス許可を設定する最善の方法の1つです。

3

ワールドライト可能(chmod 777)のサーバーにディレクトリを作成することはお勧めしません。あなたの問題についてhttps://laracasts.com/discuss/channels/general-discussion/laravel-framework-file-permission-security

: をそれはそう作成するプロセスの実行がありますよう は、そのようなアクセス許可を設定し、これを参照してください

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

(ウェブサーバを想定し、グループWWW-データの下で実行されています)毎日root権限を持つログファイル。あなたは同じもののためのcronセットアップがないと確信していますか?

場合は、ls -lをstorage/logsディレクトリに実行し、ここに出力を貼り付けます。 (許可を手動で変更する前にこれを行う)

関連する問題