time 2017/10/17
読むのが面倒な人向けまとめ
- 狙ってBOM付与してないなら、BOM付与されてるファイルを読み込んでる可能性が高い。
- 怪しいファイルをfileコマンドとかで片っ端から確認。
ここから本文
基本的には発生する事はないと思いますが、遭遇したのでメモも兼ねて。
JSONファイルがBOM付になってて困ってると連絡がありました。
もちろん付けた覚えもないし、付けようとも思わない。
原因を調べてみたところ、PHPの場合、includeしたファイルがBOM付だと、BOM付として出力してしまうそうです。
原因も分かったところで、コマンド叩いて全ファイルをチェック。
数ファイルがBOM付になってました。
BOMなしに変更したところ、無事BOMなしになりました。
途中参加の案件なので、BOMが付いてしまった経緯はよく分からないですが、狙ってBOMをつけてないはずなので、何かのタイミングでWinのメモ帳で保存してしまったのかな~。
ちなみに、ファイル数が多くて確認していくのが大変って人は↓みたいなPHP書いて実行するといいかも?
<?php $path = '/var/www'; exec('find ' . $path . ' -type f', $ls); foreach ($ls as $item) { $file = exec('file ' . $item, $file); if (preg_match('/.*BOM.*/', $file)) { echo 'hit・' . $file; echo '<br>'; } }
やってることは、指定されたパスでfindコマンドを叩いて、結果をforeachで回しながらfileコマンドでBOM付か確認してます。
BOM付の場合は、そのファイルのパスを出力するので、それを元に確認していってください。