ログファイルの書き込みに失敗した(許可が拒否されました)

日々のログファイルはLaravelがフレームをインストールした後に開始する使用される小型のパートナーの障害発生後に書かれている問題が発生した可能性があり、我々は、障害を理由とそれに対応するソリューションを書き留め詳細なログファイルを取ります。

この問題について話をする前に、Linuxシステムの下で簡単にファイルの所有権とアクセス権が必要な場合があります。

  • 所有権
    • ユーザー

      ユーザーは、ユーザーがファイルを作成し、ファイルの所有者がユーザーで、デフォルトでは、ファイルの所有者です。

    • グループ

      ユーザー・グループは、複数のユーザーを含めることができ、すべてのユーザーがこのグループに属しているファイルにアクセスするために同じ権限を持っています。そう、あなたはプロジェクトがあると、多くのユーザーが手動でこれらのユーザーにすべての権限を与える必要があり、ファイルをプロジェクトにアクセスする必要がある、あなたはグループに追加し、それらのユーザーにのみ必要、これらのグループは、ファイルにアクセスする権限を与えていますグループのメンバーだけが唯一のファイル内の読み取りおよび書き込み操作できるようになります。

    • 他の

      ユーザーは他の、この特権を持っているすべてのユーザの同等に許可を与えるように、他のユーザーは、ファイルにアクセスすることができます。

  • 許可

    各ファイルとディレクトリのアクセス権は、UNIX / Linuxシステムでは3持って、次は3人の所有者の議論です。

    • 読む:この権限は、あなたのファイルを開き、読み取り権限を与えます。ディレクトリへの読み取りアクセス権を持つ、あなたはその内容を一覧表示することができます。
    • 書き込み:読み取りアクセス権を持っている、あなたはファイルの内容を変更することができます。ディレクトリへの書き込み権限を持っている、あなたは、追加、削除、およびそのディレクトリ内のファイルの名前を変更することができます。ディレクトリに格納されているファイルへの書き込みアクセスを使用すると、ファイルへの書き込みアクセス権を持っているのシナリオを検討してではなく、あなたはまだ、ファイルの内容を変更することはできますが、名前の変更移動し、ディレクトリ内のファイルを削除することはできません。
    • 実行: Windowsシステムでは、実行可能プログラムは、通常、.exeのサフィックスを持って、あなたは簡単にそれを実行することができます。UNIX / Linuxでは、許可が与えられていない限りは、そうでない場合は、あなたがプログラムを実行することはできません、実行します。不正な実行権限であれば、あなたは、プログラムのコードを見て修正することができるように(権限が付与されている読み取りおよび書き込み)が、それを実行することはできません。

スクリーンショットは、Linuxのファイル情報の下に表示しました

Linuxのディレクトリ情報表示のスクリーンショット

上のスクリーンショットは、ファイルやフォルダの情報を示し、我々は見ることができます:

  • r読み取り可能な代表者、w代表者は、書き込みx、実行可能に代わって。
  • 最初のファイルが表示されている-文書が表示され、d
  • 最初の画像上のrw-rw-r-—インチ 最初のグループrw-ファイルの所有者は、ファイルを読み取り、書き込み、権限が利用できない実行していることを示しています。第二群のrw-読み取られ属するファイル・ユーザー・ファイルで表される基、書き込み権限がありません実行します。第3のグループはr-—、ファイルの任意の他のユーザーが読み取った表し、書き込み権限強制不能。
  • rw-rw-r--バイナリとして表され664、すべての権威であった場合、1それ以外の場合は、0最初の3つのrw-バイナリ表現を持つ11010進数に変換されている6二組が続くというように、そして最終的に取得します664
  • 最初の写真は、上記のdior www-dataファイルの所有者であることを示しているdiorユーザーは、ファイルが属するwww-dataグループ。

私たちは、多くのアプリケーションがログファイルに書き込まれ、古いファイルにちなんで命名されていることを知っています。だから、最初のユーザーログを作成するファイルが作成されている場合、特に重要であるOnwerGroup間違って、他のユーザーがログファイルに書き込まれてトリガ失敗します。

次は、ログファイルを作成することがどのように多くの異なるユーザーの下で議論します:

  • Crontabで作成したタスクの実行のタイミング、Crontabこの時点で作成されたファイルについて、ユーザーOwnerGroupの値は、ユーザーおよびデフォルトですGroup
  • このようLaravelなどのバックグラウンドプロセスの一部常駐queue workログファイルは、この時点で作成されるOwnerGroup値は、プロセスを実行するユーザーで、デフォルトが属しますGroup
  • この時点で作成されたログファイルを、サイトにアクセスするために、通常のユーザーによって生成されたファイルをログに記録OwnerしてGroupいるwww-datawww-dataユーザーがデフォルトのWebサーバーのユーザーです。

上記の分析から、我々は、おそらく問題への解決策を発見しました。

  • ユーザーがログファイルを作成し実行するための権限があり664、現在のユーザーのumaskが必要とする、より適切な0002
  • 現在実行中のユーザのデフォルトをGroup設定する必要がありますwww-data

ここで私は、特定のソリューションの下で言います:

指定したユーザは、WWWデータのcrontabを実行します。

sudo crontab -u www-data -e

Laravelは、ログファイルを作成する権限を変更します。

編集confog/logging.phpファイル

加えます 'permission' => 0664

'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 14,
        'permission' => 0664,
],

あなたは、任意のより良い方法はありますか?ウェルカムメッセージ!

おすすめ

転載: www.cnblogs.com/techcoder/p/11371744.html