2010-08-26 8 views
62

Jedes Mal, wenn ich versuche, den MIME-Inhaltstyp von PHP zu bekommen, es Echos:PHP fileinfo nicht definierte Funktion ist

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

oder

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

Ich kann es einfach nicht herausfinden!

Der Code Ich verwende ist:

$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

Kein Problem mit PHP oder Laravel, verwenden Sie wahrscheinlich Namespaced-Code, was bedeutet, dass Sie die Klasse

Antwort

94

Werfen Sie einen Blick auf die Datei php.ini und prüfen, ob die fileinfo.so oder php_fileinfo.dll aktiviert ist (je nach Plattform und Version).

Es sollte

+0

Danke für den Tipp. – Harsha

+0

'$ mime_type' gibt einen String zurück, der' enthält; charset = ', um den tatsächlichen Dateimime-Typ zu erhalten, habe ich die Frage modifiziert. –

+0

Ich benutze [diese Giste] (https://gist.github.com/Llewellynvdm/74be373357e131b8775a7582c3de508b), die mit dem Build-Skript aktualisiert werden kann, das auch hier gefunden wird. – Llewellyn

20

Welche Version von PHP haben Sie eine Zeile wie

extension=fileinfo.so 

in der php.ini-Datei sein? PHP 5.3.0 und höher haben Fileinfo eingebaut, aber unter Windows müssen Sie es manuell in Ihrem php.ini aktivieren. Sie finden weitere Informationen in the documentation.

9

Wenn Sie WAMP verwenden, dann gehen Sie zu PHP-Erweiterungen und enbale PHP_fileinfo und starten Sie alle Serverices neu.

27

Wenn Sie XAMPP verwenden, aktivieren Sie extension=php_fileinfo.dll in php.ini

5

Windows-Benutzer: bearbeiten nur php.ini und uncomment diese Zeile:

extension=php_fileinfo.dll 

D.h. die vorhergehenden Semikolon von

;extension=php_fileinfo.dll 

entfernen Denken Sie daran, Apache für neue php.ini wirksam neu zu starten.

1

Für diejenigen haben es gut funktioniert hat, aber dann dieser Fehler angezeigt:

Einigen Hosting-Provider (zB Dreamhost) erlaubt es Kunden, Standard-PHP-Einstellungen in einer Konfigurationsdatei, die oft mit einem Pfad etwas wie außer Kraft zu setzen:

~/.php/5.4/phprc

das Versionsnummer in dem Pfad ein Problem sein kann, wenn Sie PHP-Upgrade (oder ist es in Ihrem Namen aufgerüstet). Alle benutzerdefinierten Einstellungen aus der vorherigen Version, einschließlich einer, die die Erweiterung fileinfo aktiviert, fehlen in der neueren Version. Normalerweise können Sie einfach die Konfigurationsdatei in das entsprechende neue Konfigurationsverzeichnis kopieren und den Server neu starten.

+0

https://help.dreamhost.com/hc/en-us/articles/214205858-How-do-I-enable-fileinfo- – Blazemonger

1

Ich hatte das gleiche Problem mit PHP.I die folgenden Schritte tat:

- 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 

Dann Ihren Web-Server speichern und neu starten.

Verwandte Themen