2010-08-26 19 views
62

Ogni volta che cerco di ottenere il tipo di contenuto MIME da PHP, esso echos:PHP fileinfo è funzione non definita

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

o

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

non riesco proprio a capirlo!

Il codice che sto usando è:

$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

Non è un problema con php o laravel, probabilmente si sta utilizzando il codice dello spazio dei nomi, il che significa che è necessario importare la classe

risposta

94

Dai un'occhiata alla vostra file php.ini e verificare che la fileinfo.so o php_fileinfo.dll attivato (a seconda della piattaforma e versione).

Ci dovrebbe essere una linea simile a

extension=fileinfo.so 

nel file php.ini

+0

Grazie per il suggerimento. – Harsha

+0

'$ mime_type' restituisce una stringa che contiene' ; charset = ', quindi per ottenere il tipo di file mime effettivo ho modificato la domanda. –

+0

Io uso [questo elenco] (https://gist.github.com/Llewellynvdm/74be373357e131b8775a7582c3de508b) che può essere aggiornato con lo script di compilazione anche qui trovato. – Llewellyn

20

Quale versione di PHP hai? PHP 5.3.0 e successivi hanno Fileinfo integrato, ma su Windows è necessario abilitarlo manualmente nel tuo php.ini. Potete trovare ulteriori informazioni in the documentation.

9

Se si utilizza WAMP, andare alle estensioni PHP e confermare PHP_fileinfo e riavviare tutti i server.

27

Se si utilizza XAMPP, si attiva extension=php_fileinfo.dll in php.ini

5

gli utenti di Windows: basta modificare php.ini e decommentare questa riga:

extension=php_fileinfo.dll 

vale a dire rimuovere il punto e virgola che precede da

;extension=php_fileinfo.dll 

Ricordati di riavviare Apache per il nuovo php.ini abbiano effetto.

1

Per coloro che hanno avuto a farlo funzionare bene, ma poi appare questo errore:

Alcuni fornitori di hosting (ad esempio, DreamHost) consentono ai clienti di modificare le impostazioni predefinite di PHP in un file di configurazione, spesso con un qualcosa di percorso simile:

~/.php/5.4/phprc

Questo numero di versione nel percorso può essere un problema se si esegue l'aggiornamento di PHP (o viene aggiornato a vostro nome). Eventuali impostazioni personalizzate della versione precedente, inclusa quella che abilita l'estensione fileinfo, mancheranno nella versione più recente. Di solito è sufficiente copiare il file di configurazione nella nuova directory di configurazione appropriata e riavviare il server.

+0

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

1

Ho avuto questo stesso problema con PHP.I ha fatto le seguenti operazioni:

- 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 

quindi salvare e riavviare il server web.