Я пытаюсь обслуживать файл шрифта WOFF на PHP.
Сначала я устанавливаю заголовок Content-Type:
header("Content-Type: application/font-woff");
Затем я пробую следующее:
Это прекрасно работает (файл правильно передается пользователю, а заголовок Content-Length соответствует размеру файла):
readfile("path/to/font.woff");
Но это не так (скрипт завершается без ошибок, но я получаю сообщение об ошибке «поток октетов» в браузере, а заголовок Content-Length равен 0):
echo file_get_contents("path/to/font.woff");
Почему я получаю сообщение об ошибке, используя file_get_contents? Я использую Windows 10, IIS Express 10 и PHP 7.2
Вы должны проверить журналы вашего сервера и ваш log_level. file_get_contents возвращает false, если произошла ошибка при чтении файла. Я проверил это прямо сейчас и echo(false)
возвращает пустую строку. В этом случае тело ответа будет пустым (а длина содержимого будет 0).
Причиной сбоя file_get_content может быть неправильный путь или то, что содержимое файла не может быть интерпретировано как строка. File_get_contents пытается создать строку из файла. Возможно, это не работает с файлом woff. Но я не уверен в этом. Вы должны проверить журналы (уровень журнала E_WARNING).
Других решений пока нет …