Загрузка файла Laravel - расширение php fileinfo не включено


Я использую Laravel 5.4.13 с PHP 7.1 и перешел на общий хостинг. Я пытаюсь заставить веб-сайт работать, но не могу из-за отсутствия расширения: php_fileinfo

Это код, в котором происходит сбой веб-сайта:

$file = base_path() . "/storage/app/public/small.mp4";
return response()->download($file, "small.mp4")->deleteFileAfterSend(true);

И это ошибка, которую выдает Ларавель:

LogicException in MimeTypeGuesser.php line 135:
Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)

Я связался с веб-хостинговой компанией, и они сказали мне, что не могут включить это расширение из-за мер безопасности.

Какая у меня есть альтернатива? Есть ли еще какие-нибудь Функция Laravel/PHP для загрузки файла? Должен ли я использовать другой фреймворк?

Author: Zbarcea Christian, 2017-05-18

1 answers

Если вы хотите сделать это "способом ларавеля", у вас есть выбор.

Внутри Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser находится метод, называемый guess(), который вызывается и вызывает ошибку, которую вы получаете.

Существует также метод register(), который позволяет зарегистрировать новый. В соответствии с кодом:

По умолчанию установлены все средства определения типов mime, предоставляемые платформой (если доступно в текущей настройке ОС/PHP).

Вы можете зарегистрировать пользовательские догадки, позвонив в метод register() в одноэлементном экземпляре. Пользовательские догадки всегда вызываются перед любыми стандартными.

$guesser = MimeTypeGuesser::getInstance();
$guesser->register(new MyCustomMimeTypeGuesser());

Если вы хотите изменить порядок угадывателей по умолчанию, просто перерегистрируйте предпочитаемый вариант в качестве пользовательского. Последний зарегистрированный угадывающий предпочтительнее, чем ранее зарегистрированные.

Повторная регистрация встроенного угадывателя также позволяет настроить его:

$guesser = MimeTypeGuesser::getInstance();
$guesser->register(new FileinfoMimeTypeGuesser('/path/to/magic/file'));

Вы можете просмотреть догадки по умолчанию в своей папке vendor/symfony/http-foundation/File/MimeType и создайте свою собственную версию, которая проверяет тип mime таким образом, чтобы он поддерживался. Затем зарегистрируйте его.

См. также:

Http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.html

Https://github.com/symfony/http-foundation/blob/master/File/MimeType/MimeTypeGuesser.php#L131

 3
Author: Jeremy Harris, 2017-05-18 15:24:50