新しいVPSにLaravel 5をインストールしました。すべて正常に実行していましたが、Laravelエラーが発生してシステムがサーバーを起動するだけであることに気付きました。私のコードをデバッグするときに役に立たない500エラー。
laravel storage/log
を調べたところ、777
の正しいファイルパーミッションを設定していたので、奇妙なことに空でした。
では、どうすればlaravelログを取得できますか?なぜログがstorage/log
ファイルに書き込まれないのですか?.
_/storage
_ファイルディレクトリでファイルのアクセス許可を正しく設定し、共有ホスティングのないVPSで実行している場合は、_var/log/Apache2/error.log
_内のApacheログを確認することをお勧めします。
ここでは、_/var/www/html/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
_の行に沿って何かを読み取る行が表示される場合があります
あなたは正しいファイルパーミッションを持っているので、これは奇妙です...
laravelが通常インストールされているディレクトリへのVPSヘッドへのSSH接続から始めましょう_cd /var/www/html
_
ここで_ls -l
_を実行すると、以下の画像のような結果が得られるはずです:
Rootユーザーとしてサイトにアクセスしていることに注意してください。これが問題であり、_ps aux | grep Apache2
_を実行することで確認できます。
ここで、Apache2がユーザーwww-dataとして実行されていることがわかります。これはApacheでは正常です。つまり、laravelインストールが、->move()
を使用してファイルを移動しようとした場合、またはログファイルを書き込もうとした場合、www-dataユーザーに権限がないため失敗します。したがって、次のコマンドを実行して、この_www-data
_ユーザーに変更できます。_chown -R www-data:www-data *
_(同じユーザー/グループの省略形_chown -R www-data. *
_)
これで、_ls -l
_ディレクトリで_www/html
_を実行すると、rootユーザーがwww-dataに変更されたことがわかります。
これは、権限を持つwww-dataユーザーとしてファイルを編集していたことを意味します。したがって、SFTPを介して行う変更には、このユーザーの変更が反映されている必要があります。修繕!
編集-私が自分の質問に答えたのはこれが初めてです。うまくいけば大丈夫です。