結論
php artisan を実行するディレクトリで、chmod 707 -R storage
を実行すれば解決した(私の場合では)。
何があったか
未知(エラー)との遭遇
ローカル開発環境をDockerで新規構築して、Xdebug入れたりログの出力先などのphpの調整をしていた。
バニラPHPでは正しく動作することを確認したのち、Laravel10をインストール。
すると、Laravelのエラー画面で以下のテキストが表示された。
Allowed memory size of 268435456 bytes exhausted (tried to allocate 29364224 bytes)
「あんたのPHPは268MBしか使えんようになっとるで!せやのに、293MBを使おうとしたから終了したで!(関西翻訳)」といわれているようだ。
え、どうして...?
今までLaravel9で開発をしていたが、こんなエラーが出たことなど一度もなかった。Laravel10はメモリをいっぱい使うのかな~とか思いながら、php.iniをmemory_limit=1024M
というように変更した。
すると今度は、
laravel Allowed memory size of 1073741824 bytes exhausted (tried to allocate 165959713 bytes)
一気に1.6GBを要求するエラーに変わっていた。ただウェルカムページを表示しようとしているだけなのに。
もうこの時点で、メモリ不足の問題が原因ではないだろうなと感じた。
とりあえずlaravel.logの出力でも見るか・・・。
・・・。
あれ!?laravel.logが作られてない!!
そもそもの、laravel.logが存在していなかった。
ここでピンときた。これまで何度も、DockerのLaravel環境で「storageフォルダへのその他ユーザのアクセス権がないためログファイルが出力できない」というエラーが起きることがあった。
.envにAPP_DEBUG=true
と設定していると、全てのリクエストの処理のコールスタックごとのログをlaravel.logに書き込むようになっていて、storageフォルダへのアクセス権がないと異常終了してしまうのだ。
今までだったら、Cannot access to laravel.log
的なエラーが出ていたのだが、laravel.logが作られていないということは、それにかかわるエラーかもしれない。
一件落着。2時間溶けた。
その時の解決法である、chmod 707 -R storage
を試してみると、無事解決。
環境によっては、アクセス権エラーと表示されず、メモリ不足といったエラーが出ることもあるようだ。
この記事が、どなたかのエラー解決の助けになれば幸いです。
余談
ウェルカムページが表示された後、あらためてlaravel.logを確認しようとしたところ、なんと存在しなかった(!)。
たまたま今回はうまくいったが、どうも自分の勘違いだったらしい。
・・・え?マジで、どこに消えたんだ?Laravel10から廃止になったのか?