WordPressでファイルをアップロードしようとすると表示される次のようなエラー。

エラーサンプル

「このファイルタイプをアップロードする権限がありません。」と表示されています。アップロードできない原因と解決方法を当記事で見ていきましょう。

原因とその解決方法

冒頭のエラーやファイルがアップロードできない原因は、次のいずれかです。それぞれ解決方法をご紹介いたします。

拡張子が制限されている

まずほとんどの場合、ファイルの拡張子が原因です。WordPressでは、互換性やセキュリティの観点から、アップロードできる拡張子が制限されているからです。

一般的なJPEGや、PNG、GIFであれば問題ありませんが、次世代拡張子であるSVGやAVIFの画像ファイルをアップロードしようとするとエラーが発生することがあります。

例えば、WordPressでは、次のような拡張子のアップロードが制限されています。

ファイルタイプ 拡張子
画像ファイル .svg
フォントファイル .tiff, .woff, .woff2
実行ファイル .exe, .msi, .bat, .sh, .bin, .cmd, .com, .cpl, .dll, .iso, .jar, .sys, .vbs
スクリプトファイル .php, .js, .py, .pl, .rb, .cgi, .asp, .jsp, .aspx
その他 .htaccess, .htpasswd

次世代拡張子やフォントファイルのほか、何かを実行するための命令が書かれたファイル等が、セキュリティの観点から制限されているわけです。

逆に、WordPressがサポートしているファイルはこちらからご覧ください。
>> Uploading Files « WordPress Codex(WordPress公式)

特定の拡張子でアップロードが必要な場合は、プラグインを使うのも一つの手です。例えば、SVGをアップロード可能にするプラグインはこんなのがあります。

他にも色んな拡張子をアップロード許可したい場合は、こちらのプラグインを使うといいでしょう。任意の拡張子を簡単にアップロード可能に変更できます。

また、弊社には、「サイトのファビコンをicoファイル(.ico)でアップロードしようとしてできなかった」というお問い合わせもありました。

何らかの原因でicoファイルがアップロードできなかったようですが、もしファビコンに利用することが目的であれば、icoファイルにこだわる必要はありません。

WordPressのサイトアイコン設定機能を用いて、PNG形式にてアップロードが可能です。

このように、必ずしもその拡張子でアップロードする必要がない場合もあります。状況に応じて再検討してみるのもいいかもしれません。

ファイルのサイズ(容量)が大きい

ファイルのサイズ(容量)が大き過ぎると正常にアップロードできません。WordPressでは、ファイルの最大アップロードサイズが制限されているからです。

ダッシュボードの「メディア」>「新しいメディアファイルを追加」を選択すると次のように確認できます。

メディアアップローダーの最大値例

お使いのサーバーに準拠するため、ユーザーによって違いがあるようです。このサイズを超えるとファイルがアップロードできません。

大抵の場合、サーバーに設定箇所があるので、「php.ini」という設定箇所を探します。

例えばエックスサーバーの場合、サーバーパネルを開いて、下記箇所から簡単に設定できます。

エックスサーバーのphp.iniの設定箇所

お使いのドメインを選択して、下記箇所で数値を変更すればOKです。

変更する箇所

「memory_limit」が最も大きく、「upload_max_filesize」が最も小さくなるように設定してください。
また、極端に大きくし過ぎると、セキュリティ上のリスクも高くなるのでご注意ください。

これで設定を保存して、ダッシュボードの「メディア」をチェックしてみてください。最大アップロードサイズが更新されているはずです。

まとめ

WordPressでファイルがアップロードできない原因は、その拡張子がWordPressに対応していないか、ファイルのサイズが大き過ぎるケースがほとんどです。

特定の拡張子をアップロード可能にしたり、アップロードファイルのサイズを拡張することは簡単ですが、改めて対応の必要性を吟味してもいいかもしれません。拡張子の種類やファイルサイズが制限されていることには、セキュリティ上の理由があるからです。

Convertio」などのツールでWordPressに対応している拡張子に変換したり、ファイルサイズを圧縮して対応する手段もあるので、こういった記事も参考にご覧になってみてください。