Tobilog-Selection
こんにちは!トビログ管理人のとびうおです。「Laravel で nginxの502エラーが出た時」の対処法にを紹介します。(なお自分の環境はLaravel8や9です。)
とびうお
laravelっぽくないエラーが出ると
不安に感じますよね…。
1.全てのキャッシュをクリアしてみる
まずはLaravelのキャッシュクリアをしてみましょう。nginxのエラーが出た時は定番ですね。
php artisan optimize:clear
大抵の場合はこれでnginxの502エラーは消えるはずです。
2.venderを消してcomposerを入れ直す
venderを消してcomposerを入れ直してみましょう。Laravelがあるディレクトリのところで、
rm -rf vender
composer install
をしてみましょう。これは少し強いキャッシュクリアだと思っておけばOKです。
3.modelでattributeを確認してみる
これは筆者が1番不思議に思った事例なのですが、例えばデータベースの「userテーブル」に「name」カラムがあったとした時に、getNameAttribute みたいなのがあるとエラーが起きてしまいます。
Postで再現してみましょう。
//migrationファイル
Schema::create('post', function (Blueprint $table) {
$table->id();
$table->dateTime('time')
$table->timestamps();
});
//Postモデル
getTimeAttribute(){
return Carbon::create($this['time'])->format('H:i');
}
(attributeとして適切かは置いておいて、carbonを使ってカラムのtimeをformatしてあげている図)
とびうお
attributeで、同じ名前のものを指定すると
ループしてしまうからおそらくnginxのエラーが
出てしまうんだね。
これでnginxの502が出るのはとても意外です。
結論
以上のようにnginxで502のエラーが出た時は
- 全てのキャッシュをクリアしてみる
- venderを消してcomposerを入れ直す
- modelでattributeを確認してみる
が筆者が試して解決したことのある方法です。特に「modelでattributeを確認してみる」は沼ってしまう可能性があるので注意してください!
下におすすめの記事も貼っておくのでぜひ見てください!
とびうお
他にもこんな方法で解決できる!
みたいなのがあればコメントで教えてください!
コメント