我在PHP7.1中使用Laravel5.4.13,并迁移到一个共享主机。我正在努力使网站正常工作,但由于缺少一个分机:php_fileinfo,我无法工作。
这是网站崩溃的代码:
$file = base_path() . "/storage/app/public/small.mp4";
return response()->download($file, "small.mp4")->deleteFileAfterSend(true);这就是Laravel给出的错误:
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函数可以下载文件吗?我应该使用不同的框架吗?
发布于 2017-05-18 15:24:50
如果你想用“拉拉法”做这件事,你有一个选择。
在Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser内部有一个名为guess()的方法,它被调用,也是抛出正在接收的错误的原因。
还有一个register()方法,允许您注册一个新的方法。根据守则:
默认情况下,框架提供的所有mime类型猜测器都已安装(如果在当前OS/PHP安装程序中可用)。 您可以通过调用singleton实例上的寄存器()方法来注册自定义猜测器。自定义猜测总是在任何默认猜测之前调用。
$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
https://stackoverflow.com/questions/44051722
复制相似问题