wordpressで許可されないメディアをアップロードしたいとき

wordpressで許可されないメディアをアップロードしたいとき。

アップロードされたファイルタイプは許可されていません
アップロードされたファイルタイプは許可されていません

この辺の設定っていうのは、functions.phpに書かれているらしい。ここを直接いじることでアップロードの許可、またアップロードされたファイルのmimetypeを指定することができるらしい。

今回は拡張子を.bin、ファイルの中身は実行可能なバイナリをアップロードしたかった。

さっくりググるとこの問題を解決するための方法があるらしい。

デフォルトの wordpress では、.reg ファイルをアップロードすると、「添付メディアの保存の際にエラーが発生しました。」「Sorry, this file type is not permitted for security reasons.」「このファイルタイプはセキュリティの観点から許可されていません。」などと文句を垂れて来る。

プラグインとかでぱしっと管理する方法が見当たらなかったので、WordPress › フォーラム » メディアライブラリにdoc xlmファイルがアップロードできない を参考に、直接ファイルを編集して無事うまくいった。
[wordpress] メディアライブラリに登録するファイルタイプを追加する « [email protected]

上記webページが参考になったのだけれど、生憎サーバが落ちているようで、googleに残っていたキャッシュをもとに作業をしてみた。
以下は上記webページの抜粋、加筆したもの。

単純にファイルをアップロードさせるためには二カ所を編集する必要がある。

一カ所目、

$WPDIR/wp-includes/functions.php

2425 行目あたりに function wp_ext2type( $ext ) があり、ここの配列、$ext2typeを修正してやる。

既にいくつかのタイプが用意されているが、こんかいは当てはまりそうになかったので新規に用意してみた。ここのキーワードがどのように作用するかは不明。

'binary'    => array( 'bin' ),

二カ所目
2548 行目あたりに function get_allowed_mime_types() がある。ここの$mimesという配列に加えることでmime typeを指定できるらしい。またおそらく、関数の名前、またこのファイル内でこの関数が利用されている箇所から、ここにリストされた拡張子がアップロードの許可を得るのではないかな。

'bin' => 'application/octet-stream',

これでメディアライブラリからファイルのアップロードができるようになった。

 

おわりに

最後に、憂慮すべきことはwordpressを構成するファイルに手を加えてしまっていることだ。

おそらくwordpressのアップデートでこのファイルタイプは再びアップロードができなくなるだろう。またmimetypeも不明となって動作はapacheなどのhttpdで規定された動作になるんじゃないだろうか。

この問題をうまく回避したいときにはちゃんとプラグイン化してやればいいと思うよ。

コメントを残す