今携わっている案件で、PHP の mime_content_type 関数が使用されていた。しかしローカル開発環境の Mac に MacPort で入れた PHP には入っていなかった。 variants も調べてみたがなさそうだ。PHP マニュアルには mime_content_type 関数は非推奨で、PECL の Fileinfo を使用するように書かれている。Fileinfo も組み込むのが時間的に面倒だったので、file コマンドを使用してグローバル関数として mime_content_type 関数を自作してみた。

if ( !function_exists('mime_content_type') ) {
    function mime_content_type($filename) {
        $mime_type = exec('file -Ib '.$filename);
        return $mime_type;
    }
}

これを Subversion 管理以外のローカル設定ファイルに書いておけば、ローカル開発環境では自作の関数が使用され、テスト環境、本番環境では PHP 組み込みの mime_content_type 関数が使用される。

関連する投稿