UTF-8 BOM валит миграцию и updater: невидимый байт в начале файла
UTF-8 с BOM с Windows-редактора валил миграцию: headers already sent без явной ошибки. Как ловлю по EF BB BF и что запрещаю в пре-коммите.

На Windows редакторы иногда сохраняют PHP/CSV с BOM. Глазом не видно. Для скрипта миграции или updater Битрикс это «мусор» до <?php — и поехали headers already sent, белый экран, странный JSON.
Закулисье: почему винили не то
Первый раз искал баг в логике миграции и правах на upload. Логи молчали осмысленно, пока не открыл файл в hex: в начале EF BB BF. Файл «как будто UTF-8», редактор «как будто ничего не сделал». После этого BOM проверяю до того, как винить композит или хостинг.
Как ловлю
- смотрю первые байты файла (EF BB BF);
- в CI/пре-коммите запрещаю BOM на PHP;
- CSV для импорта сохраняю без BOM или режу BOM на чтении.
Мелочь, которая стыкуется с миграциями и с десктопными проектами вроде Corvo. Если белый экран без явной ошибки — проверьте BOM.