WordPress

WordPress

【WordPress】SVGファイルをアップロードしようとしたらエラーが出たので、アップロードできるようにする方法

2018/01/18

WordPressでSVGファイルをメディアへアップロードしようとしたら、いつの間にやら
セキュリティ上の理由によりこのファイル形式は許可されていません
というエラーメッセージが出るようになっていました。

せっかくロゴ画像をsvgファイルで作成したのになんてこと。。。
ということで、せっかくなのでプラグインを使わずに functions.php を編集することで対応したいと思います。

svgファイルをアップロードできない理由と対策方法

イメージ

セキュリティ上の理由によりこのファイル形式は許可されていません

原因はセキュリティアップデート

どうやら、WordPress 4.7あたりのバージョンアップでセキュリティ機能が強化され、メディアアップロード時にMIMEタイプのチェックが行われるようになりました。

ちなみにそれまでは、テキストファイル(.txt)を画像ファイルの拡張子(.jpg や .png)に書き換えてアップロード出来ていた様子。それが、拡張子と実際のファイルの中身をチェックして異なる場合は怪しいファイルと見なされてアップできないようになっているようです。

しかしながら、それで何故.svgファイルでエラーが出るのかがよく分かりません。
試しにエクセルファイル(.xlsx)やPDFをメディアアップロードしたところ、それらは問題なくアップロードできました。

原因をざっと調査したところ、

  • WordPress自体の不具合
  • レンタルしているサーバのPHPバージョン
  • WordPressが許可しているMIMEタイプの設定

など色々と出てきましたが、私の環境の場合は3つめに挙げた「WordPressが許可しているMIMEタイプの設定」が原因っぽかったです。

WordPressにてアップロードできるファイルは、許可されているファイルタイプのみできるよう設定されています。
その設定は「wp-includes」の中の functions.php にて行われています。

該当箇所を書き出すと、このようになっています。
なお、バージョンはこのポストを書いている時点での最新バージョンである4.9.1です。

設定を見る限り.svgファイルは許可されていません。
なので、「セキュリティ上の理由によりこのファイル形式は許可されていません」が表示されたようです。
納得。

.svgファイルをアップできるよう対策

ということで、対策です。
コアなファイルですが、functions.php に設定が書かれているということは、使用しているテーマの functions.php で設定が可能です。

functions.php の一番最後など、任意の箇所に以下のように書けば解決です。

これでアップロード可能です。

↑ アップロードしてみました。

サムネイルが見えていませんが、このブログのロゴ画像は.svgファイルにて作成しているので、表示されるってことはアップロードが成功しているって事ですね。

-WordPress
-, , ,