2010-08-26 81 views
62

每当我试图从PHP的MIME内容类型,它回声:PHP FileInfo的是未定义功能

Fatal error: Class 'finfo' not found in /home/jobynadel/finadel.com/video/finfo.php on line 4

Fatal error: Call to undefined function finfo_open in /home/jobynadel/finadel.com/video/finfo.php on line 4

我不能看着办吧!

我使用的代码是:

$file_info = new finfo(FILEINFO_MIME_TYPE); 
// See constant value http://php.net/manual/en/fileinfo.constants.php#113687 
$mime_type = $file_info->buffer(file_get_contents($file)); 
+0

不是PHP或laravel的问题,您可能使用了名称空间代码,这意味着您需要导入类<?php namespace Your \ Namespace; 使用finfo; – 2017-09-22 09:06:31

回答

94

有一个在你的php.ini文件,并检查​​或php_fileinfo.dll被激活(根据您的平台和版本上)。

应该有你的php.ini文件

+0

感谢您的提示。 – Harsha 2015-08-19 06:32:55

+0

'$ mime_type'返回一个字符串,其中包含'; charset = ',所以要获得实际的文件MIME类型,我修改了这个问题。 – 2016-02-21 10:01:01

+0

我使用[this gist](https://gist.github.com/Llewellynvdm/74be373357e131b8775a7582c3de508b),可以使用也在这里找到的构建脚本进行更新。 – Llewellyn 2018-03-04 15:44:27

20

类似

extension=fileinfo.so 

线你有什么版本的PHP? PHP 5.3.0及更高版本内置Fileinfo,但在Windows上,您必须在您的php.ini中手动启用它。你可以找到更多的信息in the documentation

9

如果您正在使用WAMP,请转至PHP扩展并禁用PHP_fileinfo并重新启动所有服务器。

27

如果您在使用XAMPP,您在php.ini中启用extension=php_fileinfo.dll

5

Windows用户:只需编辑的php.ini并取消这一行:

extension=php_fileinfo.dll 

即从

;extension=php_fileinfo.dll 

去掉前面的分号记得重新启动Apache的新的php.ini生效。

1

对于那些有它工作正常,但随后会出现这样的错误:

一些托管服务提供商(例如,Dreamhost的),允许客户在一个配置文件来覆盖默认的PHP设置,往往具有路径是这样的:

~/.php/5.4/phprc

,在路径的版本号可能是一个问题,如果你升级PHP(或者升级您的名义)。新版本中的任何自定义设置(包括启用fileinfo扩展名的设置)都将丢失。通常,您可以将配置文件复制到适当的新配置目录并重新启动服务器。

+0

https://help.dreamhost.com/hc/en-us/articles/214205858-How-do-I-enable-fileinfo- – Blazemonger 2017-01-13 17:11:30

1

我有同样的问题与PHP.I做了以下步骤:

- make sure that the fileinfo extension is already installed if you are using < PHP 5.3.0. 

- Then you have to add in php.ini ;extension=fileinfo.so or 
    ;extension=php_fileinfo.dll 

- If you want to uncomment remove the semicolon(;) 
    extension=fileinfo.so or extension=php_fileinfo.dll 

然后保存并重新启动Web服务器。