Fix: PHP fileinfo Extension

Fix: PHP fileinfo Extension

πŸ› Problema

`` Unable to guess the MIME type as no guessers are available (have you enabled the php_fileinfo extension?).

Symfony\Component\Mime\MimeTypes::guessMimeType Symfony\Component\HttpFoundation\File\File::getMimeType `

Causa

L'estensione PHP fileinfo non Γ¨ abilitata. Laravel la usa per rilevare il MIME type dei file caricati.

---

βœ… Soluzione: Abilita fileinfo

Opzione A: Via cPanel (Raccomandato)

1. Login cPanel β†’ https://sartup.it:2083 2. Software β†’ Select PHP Version 3. Trova fileinfo nella lista extensions 4. Spunta il checkbox βœ… 5. Click Save 6. Verifica con:

`bash php -m | grep fileinfo

Output: fileinfo βœ…

`

---

Opzione B: Via php.ini

Se hai accesso diretto al file php.ini:

1. Apri php.ini: `bash nano /opt/cpanel/ea-php82/root/etc/php.ini `

2. Trova e decommenta (rimuovi ;): `ini ;extension=fileinfo

Diventa:

extension=fileinfo `

3. Salva e riavvia PHP-FPM: `bash systemctl restart ea-php82-php-fpm `

---

Opzione C: Via .user.ini (cPanel)

Se non hai accesso a php.ini, crea .user.ini nella root:

`bash cd /home/capera/public_html/sartup/public echo "extension=fileinfo" > .user.ini `

Nota: cPanel potrebbe sovrascrivere questo file.

---

πŸ§ͺ Verifica

Test 1: PHP CLI

`bash php -m | grep fileinfo `

Output atteso: ` fileinfo `

Test 2: phpinfo()

Crea file temporaneo: `bash cd /home/capera/public_html/sartup/public echo "<?php phpinfo();" > info.php `

Apri: https://sartup.it/sartup/public/info.php

Cerca "fileinfo" β†’ Deve essere enabled

⚠️ IMPORTANTE: Elimina il file dopo il test! `bash rm info.php `

Test 3: Laravel Tinker

`bash php artisan tinker

// Test upload $file = new \Illuminate\Http\UploadedFile('/path/to/test.csv', 'test.csv'); echo $file->getMimeType(); // Output: text/csv βœ… `

---

πŸ”§ Altre Extensions Utili per Laravel

Mentre sei in Select PHP Version, abilita anche:

` βœ… fileinfo (per MIME type detection) βœ… mbstring (per multibyte strings) βœ… pdo_mysql (per database) βœ… zip (per composer/export) βœ… gd (per image manipulation) βœ… curl (per HTTP requests) βœ… openssl (per encryption) βœ… tokenizer (per Laravel parsing) βœ… xml (per XML parsing) βœ… bcmath (per precisione numerica) `

---

πŸ“‹ Checklist Post-Fix

  • [ ] Estensione fileinfo abilitata
  • [ ] PHP-FPM riavviato (se necessario)
  • [ ] Verificato con php -m | grep fileinfo`
  • [ ] Testato upload CSV in sartUP
  • [ ] Eliminato file info.php (se creato)
  • ---

    🎯 Dopo il Fix

    Riprova l'upload CSV:

    1. Vai su Profili Import 2. Click "Nuovo Profilo" 3. Upload CSV 4. βœ… Dovrebbe funzionare senza errori

    ---

  • PHP fileinfo: https://www.php.net/manual/en/book.fileinfo.php
  • Laravel File Uploads: https://laravel.com/docs/11.x/filesystem
  • cPanel PHP Selector: https://docs.cpanel.net/ea4/php/php-selector/

---

Fix applicabile in < 5 minuti via cPanel Nessun riavvio server necessario

Analisi Codice

Blocco 1
Unable to guess the MIME type as no guessers are available 
(have you enabled the php_fileinfo extension?).

Symfony\Component\Mime\MimeTypes::guessMimeType
Symfony\Component\HttpFoundation\File\File::getMimeType
Blocco 2 bash
php -m | grep fileinfo
# Output: fileinfo βœ…
Blocco 3 bash
nano /opt/cpanel/ea-php82/root/etc/php.ini
Blocco 4 ini
;extension=fileinfo

# Diventa:
extension=fileinfo
Blocco 5 bash
systemctl restart ea-php82-php-fpm
Blocco 6 bash
cd /home/capera/public_html/sartup/public
echo "extension=fileinfo" > .user.ini
Blocco 7 bash
php -m | grep fileinfo
Blocco 8
fileinfo
Blocco 9 bash
cd /home/capera/public_html/sartup/public
echo "<?php phpinfo();" > info.php
Blocco 10 bash
rm info.php
Blocco 11 bash
php artisan tinker

// Test upload
$file = new \Illuminate\Http\UploadedFile('/path/to/test.csv', 'test.csv');
echo $file->getMimeType();
// Output: text/csv βœ…
Blocco 12
βœ… fileinfo     (per MIME type detection)
βœ… mbstring     (per multibyte strings)
βœ… pdo_mysql    (per database)
βœ… zip          (per composer/export)
βœ… gd           (per image manipulation)
βœ… curl         (per HTTP requests)
βœ… openssl      (per encryption)
βœ… tokenizer    (per Laravel parsing)
βœ… xml          (per XML parsing)
βœ… bcmath       (per precisione numerica)