PHP. Почему функция fwrite возвращает больше байт чем длина записанного ею контента?

Перестал работать кэш на файлах в битриксе. Полез разбираться. В методе сохранения кэша есть условие на тождественное равенство байт из функции fwrite с содержимым записанного. Если тождественно равно, кэш запишется. Вот теперь не равно. Чуть-чуть больше.

$handle = fopen($fnTmp, "wb+")
$this->written = fwrite($handle, $contents);
$len = strlen($contents);
fclose($handle);
$tmpContent = file_get_contents($fnTmp);

Printu::obj($this->written)->title('write $this->written');
Printu::obj($len)->title('write $len');
Printu::obj(strlen($tmpContent))->title('write $tmpContent');

if ($this->written === $len) {
...

лог:

write $this->written: 212983
write $len: 210048
write $tmpContent: 210048

Ответы (1 шт):

Автор решения: mpakfm

Спасибо Алексей. Перепроверил, действительно в настройках php.ini стояло 2 Вообще ранее я менял эту настройку локально для этого хоста. Битрикс изменил правила. И все проверки проходили успешно. Настройка пхп показывала такое: Directive Local Value Master Value mbstring.func_overload 0 2 Изменив сейчас корневую настройку в php.ini теперь настройка такая: Directive Local Value Master Value mbstring.func_overload 0 0 Теперь циферки совпадают.

→ Ссылка