Fileコマンド(magicファイルとか)

fileコマンドでファイルが何のファイルか推測できる。
今のトコこれで困ったことはない。

今回フラッシュをサーバにPHPでアップロードする際、
PECL:Fileinfoを使った。
Fileinfoではfileが使うmagicファイルとmagic.mimeを使うっぽい(あとそれぞれをコンパイルした*.mgc)


で、今日何が起きたかと言うとswfは問題なく識別できるが圧縮されたswfが識別できない!!

ちなみにヘッダーでは通常のswfが"FWS"から始まり、圧縮されたswfは"CWS"から始まる。


/usr/share/file/magicを読むと問題なくFlash(FWSとCWS)に関する記述がある。

/usr/share/file/magic.mimeにはCWSがない

と言うわけでFlashの項目の下に下記を追加


0 string CWS
>3 byte x application/x-shockwave-flash

これでおk!


と思いきや、なぜか識別できない。。。

いろいろ調べるとコンパイルしないとダメらしい

てことで下記を実行


% sudo file -iC
※iオプションを抜くと/usr/share/file/magicがコンパイルされます。

念のためコマンドラインで確認


% file -i hoge.swf
item2.swf: application/x-shockwave-flash

これだおkだ!