2009-04-21 4 views
2

PHPアプリケーションでアップロードされたファイルのMIMEタイプをチェックしようとしています。私は、ファイルをアップロードし、その後、これを行うには、$ファイルは私のファイルへのパスです。このような状況でPHPのFILEINFO_MIMEオプションが空の文字列を返します

$finfo = new finfo(FILEINFO_MIME); 
$mimetype = $finfo->file($file); 

、$のMIMEタイプは、常に空の文字列です。私はいくつかのファイルタイプ(.jpg、.doc、.txt、.pdf)でテストしましたが、それは常に空です。それは "image/jpeg"のようなものを返すことになっています。

私は、デバッグして、コードスニペットは今、このあるように、最初の行を変更:JPEG画像データ、JFIFは標準1.02:私はJPGをアップロードしたときに、このような状況で

$finfo = new finfo(FILEINFO_NONE); 
$info = $finfo->file($file); 

、$情報このました。だから私はそれがファイルに正しく到達していることを知っているが、FILEINFO_MIMEを渡しても正しいmime文字列が返されない。

これはステージングサーバーでのみ発生します。私のローカルサーバー上で、私は正しいMIMEタイプを取得します。私のステージングサーバーがMIMEタイプの空の文字列を返す理由は誰にもありますか?

+1

は、それが空の文字列、またはFALSEを返していますか? –

+2

空の文字列を返します。 – Pamela

答えて

0

これを試してみてください:魔法のファイルが正しくサーバー上に置かれている場合、私は思ったんだけど

<?php 
$fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic'); 
$mime_type = $fi->buffer(file_get_contents($file)); 
?> 
+1

これも私に空の文字列を返します。 – Pamela

1

。魔法のデータベースファイルの

magic_file
名、/path/to/magic.mimeのような通常の何か。指定されていない場合は、MAGIC環境変数が使用されます。この変数が設定されていない場合は、/ usr/share/misc/magicがデフォルトで使用されます。 .mimeおよび/または.mgc接尾辞が必要に応じて追加されます。

あなたは最後の引数

$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic"); 
+1

提案していただきありがとうございますが、私はまだこれで空の文字列を取り戻しています。 – Pamela

+1

私のMIMEファイルは/ usr/share/file/magicにありますが、そこにも同じ結果があります。 – Pamela

0

で独自のファイルを指定することができますので、あなたは一例from the manualを試してみました:

<?php 
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 

    echo finfo_file($finfo, $filename) . "\n"; 

finfo_close($finfo); 
?> 
関連する問題