Mi mancava scrivere qualche lamentela… Ma è tanto difficile scrivere una guida COMPLETA? Meglio un esempio di 1000 parole. Bene, mi trovo a dover gestire il MIME type di alcuni files. Cerco su google e trovo che in php c’è una funzione che fa al caso mio, proprio per estrarre le informazioni su un file, tra cui il mio caro MIME type. Apro il link, http://it2.php.net/finfo_open, e leggo il comando che cercavo:
resource finfo_open ([ int $options [, string $arg ]] )
WoW! Figo, ho risolto il problema! (ehi… aspetta a parlare!) Ok, apro il sorgente php, incollo il comando, lo modifico secondo le mie esigenze, apro il sito, aggiorno, e… CAZZO! Sembrava troppo bello, e invece?
Fatal error: Call to undefined function finfo_open() in /var/www/xxx.php on line 137
Comincio a innervosirmi (tanto per cambiare).
Non avendo altre possibilità, torno dal buon vecchio Google e cerco informazioni sulla funzione finfo_open(). Cosa scopro? La funzione fa parte di una libreria non inclusa di default, che richiede l’aggiunta di una riga in php.ini:
- Linux:
extension=fileinfo.so
- Windows:
extension=php_fileinfo.dll
Cerco il file sul server (mai una volta che trovo una libreria utile installata per sbaglio… ehehe) e ovviamente fileinfo.so non c’è. Cerco con il gestore dei pacchetti… niente! Torno in google, scopro che si tratta di una estensione PHP PECL. Torno sul manuale online PHP e leggo i commenti degli utenti: “per installare PECL bisogna fare… bla bla bla”.
Ora: già ero nervoso perchè per l’ennesima volta le funzioni utili si trovano su librerie esterne opzionali, ma la cosa che mi fa incazzare è: possibile che una informazione così importante come una dipendenza da una libreria esterna bisogna scoprirla su google e poi andare a leggere i commenti degli utenti? Non sarebbe il caso di scrivere come prima riga in grassetto, qualcosa tipo “funzione disponibile solo dopo aver installato la libreria fileinfo.so” e magari un bel link ad una pagina che spiega come installare la libreria? No? …troppo difficile da pensare? Evidentemente si… bisogna affidarsi come sempre ai commenti dei colleghi sviluppatori.
AGGIORNAMENTO:
Non bastano neanche i commenti degli sviluppatori a volte. Cosa dice il commento? (che poi vorrei sapere come ha lanciato apt-get install da utente ($)… boh!
$ apt-get install file-devel
$ wget http://pecl.php.net/get/Fileinfo-1.0.4.tgz
$ tar -zxvf Fileinfo-1.0.4.tgz
$ cd Fileinfo-1.0.4
$ pecl install fileinfo
Cosa faccio io? Provo…
root@work:/etc/apache2/mods-enabled# apt-get install file-devel
Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso
Lettura delle informazioni di stato... Fatto
E: Impossibile trovare file-devel
root@work:/etc/apache2/mods-enabled#
E va bene, proviamo diretamente con PECL, magari avrò più fortuna…
root@work:/etc/apache2/mods-enabled# pecl search Fileinfo
Retrieving data...0%Matched packages, channel pecl.php.net:
=======================================
Package Stable/(Latest) Local
Fileinfo 1.0.4 (stable) libmagic bindings
root@work:/etc/apache2/mods-enabled#
WoW, ottimo , l’ho trovato… ora lo installo!!! Che felice che sono 🙂
root@work:/etc/apache2/mods-enabled# pecl install Fileinfo
downloading Fileinfo-1.0.4.tgz ...
Starting to download Fileinfo-1.0.4.tgz (5,835 bytes)
.....done: 5,835 bytes
3 source files, building
running: phpize
sh: phpize: not found
ERROR: `phpize' failed
root@work:/etc/apache2/mods-enabled#
Ma porc…. allora ditelo che fate apposta! MALEDETTI!
Geniale!!! Fottutamente geniale!!!!
Leggendoti mi sono rivisto la mia vita nelle ultime ore!!! 😀
Ma alla fine come hai fatto??? 😀
A chi lo dici…