2011-01-05 23 views
1

Microsoft Power Pointで作成されたPower Point 2000文書(.ppt)をアップロードすると、application/vnd.ms-officeのMIMEタイプが返されます。私はapplication/vnd.ms-powerpointが戻ってくることを期待しています:PHPの不正なMIMEタイプ

<?php 
    $finfo = new finfo(FILEINFO_MIME); 
    $mime_type = $finfo->file($filepath); 

    // strip off the mime encoding information 
    $mime_type = substr($mime_type, 0, strpos($mime_type, ';')); 

これはどういう場合でしょうか?私は次のことを実行しています

  • Ubuntuの
  • PHP 5.2
  • のApache 2
+2

'finfo'は基礎となるシステムの' file'機能に依存しているので、おそらくそこで調査しなければなりません。おそらく 'mime_magic'ファイルを更新します.... –

+0

私はapplication/vnd.ms-officeのMIMEタイプを見ることができませんが、どこから来ているのかまだ分かりません。私は、Apacheとメインシステムのmime_magicファイルをチェックしました。他のアイデア? – Treffynnon

答えて

1

finfoそれがMicrosoft Officeドキュメントに来る場合は特に、100%の信頼性ins't。私はあなたの解決策に簡単な修正があるとは思わない。もしそれがapplication/vnd.ms-officeを返したら、ファイルの拡張子が.pptであるかどうかをチェックし、そうであれば、MIMEタイプをapplication/vnd.ms-powerpointに設定してみてください。もちろん、拡張機能は意味がありませんが、Microsoftを使用している場合は、拡張子が.pptのファイルがパワーポイントであり、それ以外のものではない可能性があります。

+0

アプリケーションのMIMEタイプをマップするファイルがありますので、ファイルmimeタイプのPowerpointなど、常に同じ名前を得ることができます。ですから、一時的に 'application/vnd.ms-office'にエラーを止めるためにPowerpointのMIMEマッピングを作成しました。 – Treffynnon

0

Apache MIMEタイプファイルに、そのファイル拡張のMIMEタイプが正しいことを確認してください。 /conf/mime.typesを見て、これらの行が存在しない場合はそれらを追加することをお勧めします。

application/vnd.powerpoint ppt 
application/vnd.powerpoint pptx 

これらの変更を加えたら、Apacheを再起動する必要があります。

+0

これらの行は現在両方とも '/ etc/mime.types'にあります。Apache confディレクトリにはmime.typesファイルはありません。 'application/vnd.ms-powerpoint ppt pps'と' application/vnd.openxmlformats-officedocument.presentationml.presentation \t pptx'があります。 – Treffynnon

関連する問題