PHP7.3環境でLaravelのメールが送信出来ないことがある

Laravelを使用しているプロジェクトのサーバーを昨年末にPHP7.3に更新しました。

問題なく稼働していたのですが、2月になってから稀にメール送信時にエラーが出ていました。

日本語サイトでこの現象について書いている人がいなかったので今回はその現象の紹介と原因を書いておきます。

現象

エラーメッセージ: Class setQueue does not exist at vendor/laravel/framework/src/Illuminate/Container/Container.php:779)

メール送信時にこのエラーが出たり出なかったりします。

送信出来てる時は出来ているのですが、一旦出来なくなるとしばらく出来なくなり何かの拍子にまた送信出来るようになります。

今回のプロジェクトだと本番環境は丸2ヶ月問題なくメールの送信が出来ていました。

 

原因

PHP7.3環境のOPcacheが原因

https://bugs.php.net/bug.php?id=77310

 

対策

OPcacheを無効にする

PHPを7.3.2にアップデートする(未確認)

Laravel5.7の場合は最新版にアップデートする(該当コミット)

 

さいごに

今回のプロジェクトはLaravel5.5環境なのでLaravel本体をアップデートするという解決方法は使えませんでした。

なので一時的にOPcacheを無効にして今後の対策を考えています。