WordPressのファイルアップロードサイズ上限が低く設定されていると、大きなサイズのファイル、プラグイン、テーマをアップロードできないことがあります。メディアを多用したサイトを構築する場合、これが大きな障害となるかもしれません。そのような場合、WordPressまたはサーバー(もしくはその両方)のファイルアップロードサイズ上限を引き上げなければなりません。

ご利用中のホスティングサービスやサーバーによってこの問題の解決方法は様々です。今回はそれら全てをご紹介し、WordPressで素早くファイルアップロードサイズを増やす方法を解説します。

それでは、早速詳しく見ていきましょう。

動画での解説もご用意しています

WordPressのファイルアップロードサイズ上限とは

大きなファイルのアップロードは、サーバーのリソースを大量に消費します。サーバーのタイムアウトが発生するのを防ぐために、WordPressのファイルアップロードサイズ上限の初期設定は、通常4 MBから128 MBに設定されています。一般的に、上限はレンタルサーバーがサーバーレベルで設定します。

WordPressにもこの上限を定義する定数が存在しますが、多くの場合、サーバーレベルの設定に優先して適用することはできません。

上限を確認するにはWordPressサイトのメディアライブラリを開きます。そこから、ファイルアップロードサイズの上限を超えるファイルをアップロードすると、次のようなエラーメッセージが表示されるはずです。

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

「このサイトのアップロードサイズ上限を超えています」というエラーは厄介ですが、表示されるのには主に2つの理由があります。セキュリティと効率です。サイトの所有者や悪意のある人物などの第三者が巨大なファイル(高解像度の画像や、サイズの大きな動画など)をアップロードするのを防ぎます。

そうでなければ、サーバーが正常に機能しなくなり、サイトが非常に遅くなってしまいます。最悪の場合、サイトがダウンしてしまうことすらあります。

WordPressのファイルアップロードサイズ上限を確認する方法

ファイルアップロードサイズ上限を確認する方法は複数存在します。一つずつご紹介します。

メディアライブラリから確認

サイトのファイルアップロードサイズ上限を確認するもっとも手早い方法は、WordPress管理画面の「メディア」>「ライブラリ」に移動することです。そこで「新規追加」をクリックすると、メディアアップロード機能が利用できます。

WordPressのファイルアップロードサイズ上限
WordPressのファイルアップロードサイズ上限

Kinstaでホスティングしているサイトであるため、最大アップロードサイズ: 128 MBというメッセージが「ファイルを選択」ボタンの下に表示されます。他のレンタルサーバーをご利用の場合、異なる上限が表示されているかもしれません。

「メディア」>「新規追加」を直接開いても同じメッセージが下部に表示されます。

WordPressメディアライブラリ内の「最大アップロードサイズ」の表示
WordPressメディアライブラリ内の「最大アップロードサイズ」の表示

ここにもファイルサイズの上限、 128 MB が表示されています。

サイトヘルス情報から確認

WordPress 5.2以降、より効率的にWordPressサイトをデバッグできるよう、サイトヘルス機能が追加されました。ここから、サーバーやWordPressの設定に関するほとんど全ての情報が確認できます。

ファイルアップロードサイズ上限はサーバーとWordPressの両方で扱われるため、この画面からその値を確認する方法は2通りあります。

まず、「メディア処理」のドロップダウンから確認することができます。そこからアップロードファイルの最大サイズの値を確認しましょう。

「サイトヘルス情報」画面の「メディア処理」
「サイトヘルス情報」画面の「メディア処理」

2つ目の方法は、「サーバー」のドロップダウンから確認する方法です。ここにはウェブサーバーの設定に関する様々な情報が表示されます。「アップロードの上限ファイルサイズ」という項目から値が確認できます。このサイトの場合、上限が129MBであることが分かります。

「サイトヘルス情報」画面の「サーバー」
「サイトヘルス情報」画面の「サーバー」

また、次のようなPHPに関する数値も確認できます。

  • PHP投稿の上限ファイルサイズ: POSTリクエストのアップロード上限を定義。
  • PHPメモリ上限: PHPに割り当てられたメモリを定義。「アップロードの上限ファイルサイズ」と同じ値またはそれ以上に設定されているはずです。そうでなければアップロードは失敗します。

レンタルサーバーがこれらの値を設定します。通常、Starterホスティングプランでは、Enterpriseホスティングプランよりもこの値が低く設定されています。中には、これらの上限を超えた値を設定することがきるレンタルサーバーも存在します。しかし、多くの場合、上限を引き上げるにはサーバー運営元に問い合わせる(またはプランをアップグレードする)必要があります。

WordPressサイトでファイルアップロードサイズ上限を引き上げるべき理由

WordPressサイトのファイルアップロードサイズ上限を引き上げるべき理由はたくさん存在します。一般的な理由には次のようなものがあります。

  • WordPressの管理画面から直接サイズの大きなテーマやプラグインをインストールしたい場合。
  • 閲覧者に繰り返しサイトを訪問してもらうには定期的にWordPressサイトを更新することが重要です。新たな画像、動画、音声などのメディアを定期的に追加することもそのうちに含まれます。しかし、ファイルサイズの上限により、それが難しくなることもあります。
  • サイズの大きな動画や画像をサイトの背景やヘッダーとして使うためにアップロードしたい場合。
  • 電子書籍、写真、動画、テーマ、プラグインなどのデジタルファイルをサイトから直接販売したい場合。これらのファイルは何百メガバイト(もしくはそれ以上)にもなってしまうことがあります。

WordPressのファイルアップロードサイズ上限について基本的な知識を学んだところで、ここからは上限を引き上げる方法をご紹介します。

WordPressサイトのファイルアップロードサイズ上限を引き上げる10の方法

WordPressサイトのファイルアップロードサイズ上限を引き上げる方法はたくさんあります。まずは最も簡単な方法からご説明し、その後、中級者向けの手順の説明に移ります。

レンタルサーバーに問い合わせる

ファイルアップロードサイズ上限に関する問題に直面した際、レンタルサーバーに問い合わせるのが最も手っ取り早いことがあります。テクニカルサポートのスタッフにとってファイルアップロードサイズ上限の引き上げは簡単な作業ですので、多くの場合、あっという間に解決するでしょう。

サーバーやサイトの設定をいじるのは面倒なこともあります。そのため、まずはこの方法を検討してみましょう。

Kinstaをご利用のお客様の場合、スタッフが年中無休で対応しており、ワンクリックでお問い合わせいただけます。問い合わせるにはMyKinstaを開き、右下にあるチャットのアイコンをクリックしてください。

MyKinstaでライブチャットを開く
MyKinstaでライブチャットを開く

次に「Send us a message」をクリックし、お問い合わせ内容を選択してください。

チャットでメッセージを送信
チャットでメッセージを送信

英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語など様々な言語で対応いたします

WordPressのマルチサイトでファイルアップロードサイズ上限を引き上げる

WordPressのマルチサイトネットワークを運営している方は、ご自分のネットワーク全体のファイルアップロードサイズ上限を引き上げることができます。

「サイトネットワーク管理者」の管理画面から「設定」>「サイトネットワーク設定」を開きます。そこから、「アップロード設定」の項目までスクロールします。そこに「アップロードファイル最大サイズ」という項目があります。

「サイトネットワーク設定」の「アップロードファイル最大サイズ」
「サイトネットワーク設定」の「アップロードファイル最大サイズ」

WordPressマルチサイトの「アップロードファイル最大サイズ」の初期設定は1500 KB (~1.5 MB)です。これをより大きな値に変更し、「変更を保存」をクリックします。

補足)サーバーレベルで設定されたアップロードファイル最大サイズをここから書き換えることはできません。サーバーで設定された上限を超える値を設定しても、その設定は無効となってしまいます。サーバーの設定値を確認するには既にご紹介した手順をご確認ください。

「サイトネットワーク設定」の新たな「アップロードファイル最大サイズ」
「サイトネットワーク設定」の新たな「アップロードファイル最大サイズ」

ここでは、新たなアップロードファイル最大サイズを131072 KB (~128 MB)に設定しました。

マルチサイトネットワーク上の、個別のサイトにアップロードできる合計ファイルサイズ上限を設定することも可能です。ただし、こちらは初期設定では無効になっています。

「.htaccess」ファイルを更新する

サーバーがApacheを利用している場合、サイトの.htaccessファイルを変更してファイルアップロードサイズ上限を引き上げられます。.htaccessファイルはWordPressサイトのルートディレクトリにあります。

PHPのドキュメンテーションによると、WordPressのアップロードに関する挙動は次の3つのPHPディレクティブが制御しています。

  • upload_max_filesize
  • post_max_size
  • memory_limit

既にサイトヘルス情報の項目でご紹介した通りです。これらの値を変更することでアップロードできるファイルサイズを増加できます。例えば、アップロードしようとしている最も大きなファイルサイズが32MBである場合、次のように設定を変更します。

  • upload_max_filesize = 32M
  • post_max_size = 64M
  • memory_limit = 128M

お気づきのとおり、全ての単位にはMBではなくMが使用されます。PHPのディレクティブはこのように記載することになっています。

アップロードの際にはファイルサイズ自体に加え、多少の追加情報が伴うことがあります。そのため、全てのアップロード関連のディレクティブにも若干の余裕を見た値を設定するといいでしょう。詳しくは、PHPメモリ上限を改善する方法をご覧ください。

FTP/SFTP、もしくはレンタルサーバーのファイルマネージャーから.htaccessファイルにアクセスします。

「.htaccess」ファイルを探す
「.htaccess」ファイルを探す

テキストエディターコードエディター.htaccessファイルを開き、次のコードを追記します。

php_value upload_max_filesize 32M
php_value post_max_size 64M
php_value memory_limit 128M
php_value max_execution_time 300
php_value max_input_time 300

先ほど紹介したものの他にmax_execution_timemax_input_timeという2つのディレクティブがあることにお気づきでしょう。これはサーバーが一つのPHPタスクにどれだけの時間を費やすかを定義します。アップロードサイズが大きいほど、かかる時間も長くなります。目的に応じて、適切な値を設定する必要があります。

補足)上記の手順で変更を行うと、500 Internal Server Error (内部サーバーエラー)が発生することがあります。これは多くの場合、ご利用のサーバーがCGIモードでPHPを使用しているため発生します。その場合、.htaccessファイルを使った上記の手順を利用することはできません。

「php.ini」ファイルを作成もしくは変更する

php.iniファイルでは、PHPの初期設定への変更を定義することができます。一般的には、ファイルのタイムアウト、最大アップロードサイズ、リソースの上限などを定義するディレクティブが含まれます。

SSHもしくはFTPを利用し、WordPressのルートディレクトリからphp.iniファイルを探します。場合によっては見つからないかもしれません。それでも心配はご無用です。同名の新しいファイルをサイトのルートディレクトリ内に作成することができます。

新たなphp.iniファイルの作成方法
新たなphp.iniファイルの作成方法

コードエディターもしくはテキストエディターを使って、次のコードをphp.ini ファイルに記述します。

upload_max_filesize = 32M
post_max_size = 64M
memory_limit = 128M

変更を加えた後は忘れずにファイルを保存しましょう。一部のレンタルサーバーではこの方法でPHPの設定を変更できないことがあります。その場合、代わりに次の方法をお試しください。

「.user.ini」ファイルを作成もしくは変更する

お使いのレンタルサーバーがPHPの共通設定の変更を制限している場合、php.ini ファイルではなく .user.ini ファイルでサーバーの設定をしている可能性があります。

php.ini.htaccessファイルと同様に、.user.iniもまたサイトのルートディレクトリ内にあります。見つからない場合は、そこに新たな .user.iniファイルを作成しましょう。php.iniファイルを作成する手順と同じです。

次のコードを.user.iniファイルに記述します。

upload_max_filesize = 32M
post_max_size = 64M
memory_limit = 128M

お気づきの通り、ファイル名が違うことを除けば、先ほどと同じ手順です。

cPanelを介してPHPの設定を変更する

ご利用のレンタルサーバーが、サーバーの管理やサイトの設定にcPanelを採用している場合、そのインターフェースからファイルアップロードサイズ上限を変更することができます。

まずcPanelのコントロールパネルを開き、「ソフトウェア」から「Select PHP Version」を選びます。

cPanelの「Select PHP Version」をクリック
cPanelの「Select PHP Version」をクリック

ここから、サーバーのPHPバージョンを変更したり、PHPの拡張機能を有効もしくは無効にしたりできます。ナビゲーションメニューから「Optionsをクリックし、「PHP Options」画面を開きます。

cPanelの「PHP Options」画面を開く
cPanelの「PHP Options」画面を開く

下へスクロールし、 upload_max_filesize、 post_max_sizememory_limitmax_execution_timemax_input_time などのPHPディクティブの値を変更しましょう。ここで設定できる最大値は現在ご利用のホスティングプランによって異なります。

cPanelの「PHP Options」画面
cPanelの「PHP Options」画面

こちらの値に疑問がある場合、レンタルサーバーに問い合わせることをおすすめします。最新のcPanelでは変更が自動で保存されますので、何もクリックする必要はありません。ただし、古いcPanelのバージョンをご利用の場合「Save Changes」をクリックする必要があります。

Nginxでファイルアップロードサイズの上限を引き上げる

NginxもまたApacheと同じくウェブサーバーですが、性能はApacheを大きく上回ります。通常、NginxはApacheよりも多くの同時リクエストを処理することができるため、大幅に高速です。KinstaのWordPress用に最適なパフォーマンスを発揮できるよう調整したホスティングサービスでは、Nginxを利用しています。

WordPressサイトでNginxを使用している場合、php.ininginx.confファイルの両方を編集する必要があります。php.iniについては既にご説明したとおりです。二つ目のファイルはNginx configというファイルです。

Nginxサーバーではphp.iniファイルは/etc/php/7.4/fpm/php.iniにあります。インストールしたPHPのバージョンによって、手順は若干異なります。

upload_max_filesize = 64M
post_max_size = 128M

上記のファイルではmemory_limitを設定する必要がありません。Nginxではこれを別の形で取り扱っているからです。詳しくはこちらの Stack Overflowのスレッドをご覧ください。php.iniファイルを保存したら、ターミナルから次のコードを実行、PHP-FPMを再起動し変更を反映しましょう。

sudo service php7.4-fpm restart

ここでもまた、実際のコードはサーバーにインストールされているPHPのバージョンによって若干異なります。

次に、Nginxのclient_max_body_sizeディレクティブにより新たな最大アップロードサイズを設定します。このディレクティブは/etc/nginx/nginx.confにある nginx.conf ファイルで宣言しなければなりません。

http {...}server {...}、 location {...} のいずれかのブロック内でディレクティブを宣言することができます。

httpのブロック内で定義すると、サーバーでホスティングされている全てのサイトとアプリに適用されます。

http {
    ...
    client_max_body_size 128M;
}

Defining it in the server block will only affect a specific site/app hosted by this server.

server {
    ...
    client_max_body_size 128M;
}

serverのブロックで定義すると、そのサーバーでホスティングされている特定のサイトとアプリに適用されます。

location /files {
    ...
    client_max_body_size 128M;
}

変更を反映するにはファイルを忘れずに保存し、Nginxを再起動してください。ターミナルから次のコマンドを使用して実行することができます。

sudo service nginx reload

Kinstaをご利用のお客様の場合、Nginx configへ直接アクセスすることができません。スタッフまでお問い合わせいただければ、すぐに代わりに対応させていただきます。

WordPressの「upload_size_limit」フィルターを利用する

WordPress 2.5以降、php.ini.で許容される最大アップロードサイズを扱う、upload_size_limitフィルターが導入されました。WordPressでも、メディアライブラリやサイトヘルス情報の画面で最大ファイルサイズを表示するのに、このフィルターを使用しています。

WordPressの貢献者であるDrew Jaynes氏による次のフィルターの使用例をご覧ください。全ての管理者以外のユーザーのファイルアップロードサイズ上限を定義しています。

/**
* Filter the upload size limit for non-administrators.
*
* @param string $size Upload size limit (in bytes).
* @return int (maybe) Filtered size limit.
*/
function filter_site_upload_size_limit( $size ) {
// Set the upload size limit to 10 MB for users lacking the 'manage_options' capability.
if ( ! current_user_can( 'manage_options' ) ) {
// 10 MB.
$size = 1024 * 10000;
}
return $size;
}
add_filter( 'upload_size_limit', 'filter_site_upload_size_limit', 20 );

上記のコードでは、WordPressのmanage_options 機能を使って管理者以外のユーザーにのみ上限を適用しています。コードを編集して特定のユーザー種類やユーザーIDにのみ適用することも可能です。詳しくはWordPressのユーザーの種類と権限に関する記事をお読みください。

WordPressプラグインを使用する

SSHやFTP/SFTPを利用してコードを編集するのは嫌だという方もいらっしゃるはずです。コードの記述や編集が苦手な方は、代わりにWordPressプラグインを利用しましょう。

プラグイン「WP Maximum Upload File Size」
プラグイン「WP Maximum Upload File Size」

今回はプラグイン「WP Maximum Upload File Size」を使用します。この記事の執筆時点では、WordPressプラグインレポジトリ内の、更新されているプラグインの中では唯一このタスクが実行できるプラグインです。

まずは、プラグイン「WP Maximum Upload File Size」をインストールし、有効化します。次に、WordPress管理画面から設定画面を開きます。ここでは、レンタルサーバーとWordPressにより設定されたファイルアップロードサイズ上限が表示されます。

「WP Maximum Upload File Size」の設定画面
「WP Maximum Upload File Size」の設定画面

今回の場合、WordPressで設定された最大アップロードサイズはレンタルサーバーの設定した値よりも小さくなっています。そのため、表示されているドロップダウンから「Maximum Upload File Size」を選択して、その値を引き上げましょう。

補足)プラグインではレンタルサーバー側で設定されているファイルアップロード上限を超えた値を設定することはできません。レンタルサーバーに問い合わせましょう。

FTP/SFTPを介してファイルをアップロードする

ここまででご紹介した方法を試しても、レンタルサーバーに依頼しても最大アップロードサイズが変更できないという方は、FTP/SFTPを介して大きなサイズをアップロードしてみましょう。

SFTPを用いてサーバー/コンピュータ間でファイルをドラッグアンドドロップする
SFTPを用いてサーバー/コンピュータ間でファイルをドラッグアンドドロップする

大きなサイズのファイルをアップロードするとき、これが最も手っ取り早い方法です。詳しくは WordPressのメディアライブラリにファイルを一括アップロードする方法という記事をご覧ください。

時にWordPressがFTP/SFTPを介してアップロードされたファイルを認識しないことがあります。その場合、無料のプラグイン「Add From Server」を利用して、アップロードしたファイルをWordPressにインポートできます。

もしくは、コマンドラインを使用しWP-CLIで画像をインポートすることもできます。wp media import コマンドでは、ローカルファイルやURLから参照することができます。

「wp-config.php」ファイルは編集しない

wp-config.phpファイルを編集する方法は、現在は利用できません。わざわざこちらに記載しているのは、多くのネット上の解説ページでWordPressのファイルアップロードサイズ上限を引き上げる「正規の方法」として紹介されているからです。

これは、SSH、もしくはFTP/SFTPからサイトのルートディレクトリを開き 、wp-config.phpを編集するというものです。

「wp-config.php」ファイルを探す
「wp-config.php」ファイルを探す

次のコードをwp-config.phpファイルに記述するよう解説されています。

@ini_set( 'upload_max_size' , '64M' );
@ini_set( 'post_max_size', '128M');
@ini_set( 'memory_limit', '256M' );

ini_set() 関数は、設定値がPHP_INI_ALLであるPHPディレクティブにしか使用できないため、これではうまくいきません。

upload_max_size とpost_max_size はPHP_INI_PERDIRに属します。これは php.ini.htaccesshttp.conf、または.user.iniでしか変更できません。

「この方法を試してもうまくいかなかった…」という方は、これで原因がお分かりになったはずです。

新しく設定したWordPressのファイルアップロードサイズ上限を確認する

最後に、新しく設定したファイルアップロードサイズ上限がWordPressサイトにきちんと適用されているかどうかを確認しましょう。最初にご紹介した、アップロードサイズ上限を確認する手順を繰り返します。

WordPress管理画面から「メディアライブラリ」を開き、最大アップロードサイズが変わったかどうか確認します。

「メディアライブラリ」で新たな最大アップロードサイズを確認
「メディアライブラリ」で新たな最大アップロードサイズを確認

確かに変わっているので成功したことが分かります。

また、サイトヘルス情報を開き、「メディア処理」と「サーバー」のドロップダウンからも確認することができます。

サイトヘルス情報」>「メディアライブラリ」から新たなアップロードサイズ上限を確認
サイトヘルス情報」>「メディアライブラリ」から新たなアップロードサイズ上限を確認
「サイトヘルス情報」>「サーバー」から新たなアップロードサイズ上限を確認
「サイトヘルス情報」>「サーバー」から新たなアップロードサイズ上限を確認

まとめ

ご覧の通り、WordPressでファイルアップロードサイズ上限を引き上げるのはそれほど難しいことではありません。メディアを多用したポートフォリオサイトを作成したい場合でも、サイズの大きなテーマをインストールしたい場合でも、どこを確認し、どのコマンドやツールを利用すればいいかさえ分かっていれば簡単です。

多くの場合、ご利用のレンタルサーバーに問い合わせるだけで事足りるはずです。しかし、対応の悪いレンタルサーバーにお困りの方のために、様々な方法をご紹介しました。他のレンタルサーバーへの移行を検討する前に、一度お試しください。

皆さんの“アップロードライフ”がもっと快適になりますように!

アップロードサイズの上限に関する厄介な体験をしたことがある方は是非コメント欄でどのように解決したのかお聞かせください!

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.