IIS + PHP8 / Could not convert the script from the detected encoding

 2023/07/15, last updated 2023/07/31 -  ~1 Minute

IIS と PHP 7.x 系で動いているソフトを PHP 8.2 で動かそうと思うと、以下のようなエラーが出た。

PHP Fatal error:  Could not convert the script from the detected encoding "UTF-8" to a compatible encoding in ほにゃらら on line ほにゃらら

以後、他の PHP スクリプト(例えば phpinfo() を実行するだけのスクリプト) を実行させてもエラーが出続ける。(IIS を再起動しないと復旧しない)

require_once の行でエラーとなっていた。

require_once しているファイルに ef bb bf の BOM (UTF-8 を示す) が付いていた。

このファイルを dos2unix で変換すると動作するようになった。

dd if=in_file of=out_file bs=1 skip=3

で BOM を取っても動作する。