2010-08-26 4 views
62

Всякий раз, когда я пытаюсь получить MIME-тип содержимого из PHP, он вторит: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, возможно, с использованием кода с расширением имен, что означает, что вам нужно импортировать класс

ответ

94

Посмотрите файл php.ini и убедитесь, что fileinfo.so или php_fileinfo.dll активируется (в зависимости от используемой платформы и версии).

Там должна быть строка, подобная

extension=fileinfo.so 

в вашем файле php.ini

+0

Спасибо за подсказку. – Harsha

+0

'$ mime_type' возвращает строку, содержащую' ; charset = ', поэтому для получения фактического файла mime type я изменил вопрос. –

+0

Я использую [этот gist] (https://gist.github.com/Llewellynvdm/74be373357e131b8775a7582c3de508b), который может быть обновлен скриптом сборки, также найденным здесь. – Llewellyn

20

Какая версия PHP у вас есть? PHP 5.3.0 и более поздние версии имеют Fileinfo, но в Windows вы должны включить его вручную в php.ini. Вы можете найти дополнительную информацию in the documentation.

9

Если вы используете WAMP, то перейдите на PHP-расширения и enbale PHP_fileinfo и перезапустите все серверы.

27

Если вы используете XAMPP, вы включите extension=php_fileinfo.dll в php.ini

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

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 

Затем сохранить и перезапустить веб-сервер.