MicrosoftによるWindowsのPHPサポートが7.4で終了するので、今後WindowsでLaravelを動かすことはないと思うのですが、今動いている環境でというのはしばらくは続くと思われます。
そのような状況なので、今後、誰にも参照されることはないと思いますが、もし同様な現象になった方の参考になればと思い記事を書きたいと思います。
現象
先日、そのような環境でLaravelのアプリケーションを作っていたのですが、本番環境に適用しブラウザでLaravelのページを開くと何故かページが真っ白になるという謎現象が発生しました。
PHPのバージョンは7.4です。
Laravelのバージョンも少し古くて少し前のLTSの5.4です。
今回の現象とは関係ないですがIISです。
アプリケーションを配置して、調整のために.envファイルを修正してブラウザをリロードすると何故かページが真っ白になりました。
Laravelのログディレクトリにも全くログは出力されておらず、ただただページが真っ白になってログもなく調査もできず頭も真っ白になるという状況です。
試しに.envファイルをもとに戻したらページが表示されるようになりました。
ちなみに、.envファイルで修正したのはurlの部分で、ページが真っ白になるような修正ではありません。
.envファイルのページの挙動には大きく関わらなさそうな項目をメモ帳
で編集しただけです。
おっと、勘が良い方は気が付かれましたでしょうか・・・。
原因
ページが白くなる原因は.envファイルがBOM付きUTFになっていたことです。
そうです。Windows標準のメモ帳でファイルを保存したときにBOM付きUTFになったみたいです。
おそらくWindows環境で運用されている人にとっては当たり前の知識だと思うのですが、お恥ずかしいことにWindows環境で運用が初めてだったので、知らずに地雷を踏み抜いてしまいました。
(言い訳になりますが、これは絶対に自分だけではないはずと思いたい)
プログラムファイルにVSCodeがあったので試しに白い画面が表示されるときの.envを開いてみたところ、UTF-8 with BOMと表示されて気が付きました。
JavaでXMLを扱っているとBOMの有無によって、挙動が変わるライブラリもあるので、まぁあるかなとは思いましたが、まさかメモ帳がBOMで保存しているとは・・・。
補足
最近のWindowsのメモ帳ではデフォルトの保存形式がBOMなしになったみたいなので、少し安心できるみたいです。
結論
WindowsでPHPアプリケーションを運用する場合はVSCode(等のエディター)は絶対にインストールしておこう!