После обновления PHP версии 7.3 до 7.4, столкнувшись с предупреждением: finfo::файл(): Не удалось идентифицировать данные 0:не удается прочитать » (null)» в myfunction()

#php #php-7.4

Вопрос:

Предупреждение: finfo::файл(): Не удалось идентифицировать данные 0:не удается прочитать » (null)» в myfunction()

Вот мой код :

 function myfunction($file) {
  $finfo = new finfo(FILEINFO_MIME_TYPE);
  $content_mime = $finfo->file($file->uri); 
}
 

мы получаем тип mime для PHP7.3, но не для PHP7.4
Только версия PHP отличается ничем другим.

ПРИМЕЧАНИЕ: Я нашел здесь исправление для ошибки PHP 7.4 : https://bugs.php.net/bug.php?id=79681 но я не знаю, как им пользоваться.

Пожалуйста, помогите мне в этом, заранее спасибо.

Комментарии:

1. Похоже $file->uri на возвращение null , вы отладили его?

2. Похоже, ваша проблема заключается в объекте $file, а не в классе FInfo. Как вы получаете объект $file?

3. У нас то же $file->uri самое в обоих случаях, PHP 7.3 и 7.4, как показано на скриншоте $file object @simone-rossaini @LSerni

Ответ №1:

Мы можем использовать buffer функцию вместо file объекта finfo. Найдите обновленный код ниже.

 function myfunction($file) {
  $finfo = new finfo(FILEINFO_MIME_TYPE);
  $content_mime = finfo->buffer(file_get_contents($file->uri));
}
 

Это работает для меня (для PHP 7.4) и работает так, как ожидалось.