WordPressのメディアアップロードで「このファイルタイプはセキュリティ上の理由から、許可されません」エラーが出る時の解決方法

WordPressに対応したファイル形式なのにアップロードできない現象に遭遇

WordPressで、メディアライブラリにファイルをアップロードしようとしたらセキュリティ上の理由によりこのファイル形式は許可されませんや、(ファイル名)はアップロードできませんでしたというエラーが表示される現象に遭遇しました。

現象が発生したWordPressのバージョンは、WordPress5.8。
アップロードしようしたファイルはエクセルファイルで.xls形式。
WordPressは、デフォルトの状態でアップロードできるファイル形式が決まっていますが、エクセル形式(.xls)はデフォルトでもアップロードできるファイルです。
エクセル形式(.xls)全てアップロードできないわけではなく、アップロードできるファイルとできないファイルがありました。

この同じエクセルの拡張子なのにアップロードできない現象は、恐らく以下の現象が発生したのかも?

PHP のバージョンによって Fileinfoモジュール の判定結果が異なるとのこと。 WordPress の MIMEタイプ 判定もこのモジュールを得利用しているとのことで、ここで影響を受けてしまうようです。
以上より、今回の環境では本来 application/vnd.ms-excel となるべき MIMEタイプ が、何故か application/vnd.ms-office と判定され、結果、 WordPress
のファイルアップロードの際のフィルタリング処理の中の MIMEタイプ 判定で引っかかっていた、というのが今回の現象の原因でした。
WordPress で一部の .xlsファイル だけがアップロードできない (失敗) – Ewig Leere(Lab2) より引用 https://labor.ewigleere.net/2021/04/17/wordpress-upload-failed-certain-excel/#co-index-1

筆者は、以下の方法でアップロードできるようにしました。

アップロードエラーの解決方法

1. WordPressの管理画面からログアウト

まずWordPressの管理画面からログアウトします。

2. wp-config.phpをテキストエディタなどで開きます。

次に、wp-config.phpの90行目付近にあるコメントアウトされている行

/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */

の上に、

define('ALLOW_UNFILTERED_UPLOADS', true);

を追記して保存。

ALLOW_UNFILTERED_UPLOADS とは

ALLOW_UNFILTERED_UPLOADSは、(フィルタリング機能で)除外されていた形式のファイルも、アップロードできるようにするという設定で、この設定を追加すると、拡張子の制限がなくなり、全てのファイル形式のアップロードが可能になります。

3. wp-config.phpをアップロード

wp-config.phpをアップロードします。これで準備完了です。
管理画面にログインして、ファイルがアップロードできるか確認してください。
エラーが出ずにアップロードできれば完了です。

書いた人:やまライダー

やまライダーです。仙台市でブロガー兼システム寄りのWebディレクターとして働きながら嫁と一緒に子育て奮闘中!
タスク管理ツール「Todoist」でガントチャートが作成ができる補助ツール「Todoist ガントチャートコンバータ」作者。
鳥が好きでキンカチョウ(錦花鳥)を飼っています。

プロフィールを見る
やまライダーのTwitter(自転車用アカウント)
やまライダーのTwitter(システム寄りwebディレクター用)
やまライダーのInstagram