1

私は Shawn McCool の本 (素晴らしい本) を読んでいますが、新しいビューを作成して読み込もうとすると、パーミッション エラーが発生します。

生成されたビューに読み取り権限がないのはなぜだろうと思っています。奇妙なことにchmod、775 に変更してもエラーが発生します。777 に変更してから 775 に変更する必要があります。

誰かがこれに光を当てることができますか?なぜそれが起こっているのですか?

ありがとう!

編集:

新しいビューを追加した後のエラー

file_put_contents(/Users/jason/Sites/laravel1/storage/views/5c4b7b4707d658dffe52d481be6c680e): failed to open stream: Permission denied

Permissions on storage/views
drwxrwxr-x@  7 jason  jason  238 Mar  7 17:15 views

新しいビューの権限 -rw-r--r--

後のエラーchmod 775 views

 file_put_contents(/Users/jason/Sites/laravel1/storage/views/5c4b7b4707d658dffe52d481be6c680e): failed to open stream: Permission denied

後の権限chmod 775 views

drwxrwxr-x@  7 jason  jason  238 Mar  7 17:15 views

chmod 777 views、それは動作します

drwxrwxrwx@  8 jason  jason  272 Mar  7 17:25 views

chmod 777 viewsそれがまだ機能した後

drwxrwxr-x@  8 jason  jason  272 Mar  7 17:25 views

しかし、ここにひねりがあります。viewname.blade.php を使用しなければ、この問題は発生しませんでした。viewname.php をやったらエラーは出ませんでした。ブレードと関係があるようです。

編集2:

関連:常にこれらのファイルを .gitignore にして、キャッシュされたビューなどが開発環境からサーバーにプルされないようにしてください。

4

1 に答える 1

5

(私が思うに)Lion以来、Webサーバーはmod_userdirもう使用していないため、Apacheはユーザーとして実行されませんが、_www代わりに参照してください

user:~$ ps ax -o pid,user,rgroup,comm | grep -Ee "PID|httpd"
  PID USER             RGID COMM
10317 root                0 /usr/sbin/httpd
16516 _www               70 /usr/sbin/httpd
18497 _www               70 /usr/sbin/httpd
...

775アクセス許可、ユーザーjason、およびグループを持つフォルダーの場合jason

drwxrwxr-x@ 7 jason jason 238 Mar 7 17:15 storage/views

Laravel は、そのフォルダー内のすべてのブレード ビューに対してキャッシュ ファイルを作成しようとします。そのようなファイルが存在しない場合は、自動的に作成しようとします。これには、フォルダーへの書き込みアクセスが必要です。また、Apache が実行される_wwwため、そのディレクトリへの書き込みアクセスがotherとして必要になります。

ただし、ファイルが存在すると、そのファイルは によって所有されるため、Apache はディレクトリ_wwwへの書き込みアクセスを必要としなくなります。storage/views新しいビューが作成されるまで...

今できることは次のとおりです。

storage(以外にも他のキャッシュがあることに注意しstorage/viewsてください。したがって、ここでのすべてはフォルダー全体で行われstorageます)

  • storageディレクトリを次のように設定します777(開発の場合、これは「OK」です)

    chmod -R 777 storage
    
  • または(より良い)へchownstorageディレクトリjason:_www、この方法で775アクセス許可を保持でき、あなたとApacheの両方に十分なアクセス権があります。

    sudo chown -R jason:_www storage
    
于 2013-03-08T09:32:53.767 に答える