2010-08-26 109 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服務器。