この記事を読んでいるということは、おそらくWordPressサイトでファイルのアップロードに関する問題が発生し、素早く解決できる方法を探しているはず。HTMLファイル(または他の種類のファイル)をアップロードする時に表示される「このサイトのアップロードサイズ上限を超えています」という(決して珍しいものではない)エラーは、とても煩わしいものです。

多くのレンタルサーバー(ホスティングサービス)はデフォルトで、この上限を低めに設定しています。今回は、エラーの根源について深掘りし、問題を素早く解決し、ファイルをアップロードできるようにする方法をご紹介します。

WordPressのアップロードサイズ上限エラー

WordPressのアップロードサイズ上限エラー

まず、なぜこのエラーが起きるのでしょうか?これは通常WordPressの問題ではない、ということを理解しておくことが重要です。多くの場合WordPressの最大アップロードファイルサイズはサーバーレベルの設定であり、残念ながらWordPress上の操作や設定では解決できません。

この上限はセキュリティと効率の観点から設定されています。ユーザーが巨大な動画ファイルをたくさんアップロードしてサーバーを停止させてしまう事態を防ぐためです。それ自体は当然のことですが、近年ではデフォルトの2MBもしくは5MBのアップロード上限(多くのサーバーが採用しているデフォルト値)では足りないということもあるはず。そこで今回は、その容量を増やす方法をご紹介します。

ちなみに、Kinstaのデフォルトのアップロードサイズ上限は128MBです。

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

WordPressのファイルアップロードサイズの問題を解決するには基本的な3つの方法に加え、いくつかの代替案が存在します。まずは最も簡単な方法2つをご紹介し、その後に自分でサーバーの設定を変更する方法もご紹介します。その方法についても、いくつかの選択肢が存在します。

マルチサイトでアップロードサイズ上限を増やす

マルチサイトを運営している場合、サイトのアップロード上限をコントロールすることができる可能性があります。ただし、サーバーレベルの設定を上回ることはできません。サーバーの上限が5MBの場合、あなたがネットワークの上限を10,000KB(10MB)に設定してもうまくいきません。一方、サーバーが20MBに設定されていて、ネットワークの設定が1,500KBになっている場合、上限を20,000KBに引き上げることで問題を解決できます。マルチサイトでアップロードサイズの上限を増やすには次の手順に従ってください。サーバー側の設定を変更する必要がある場合は、サーバーの設定を変更するまでスキップしてください。

ステップ1

WordPressの管理画面で、「サイトネットワーク管理者」から「設定」を開きます。

マルチサイトネットワークの設定

マルチサイトネットワークの設定

ステップ2

スクロールし、「アップロードファイルの最大サイズ」の設定を再度確認します。デフォルトの1500KB(1.5MB)より大きな値に変更し、「変更を保存」をクリックします。

マルチサイトのアップロードファイルの最大サイズを変更

マルチサイトのアップロードファイルの最大サイズを変更

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

ファイルのアップロードとサイズ上限に関する問題が発生した場合、レンタルサーバー(ホスティングサービス)に問い合わせてみるのが一番手っ取り早い方法の一つです。多くのサーバーが、こういったトラブルの際に簡単に相談できるチャットのサポート窓口を設けています。アップロード上限を増やす作業は技術サポート担当者にとっては簡単な作業なので、あっという間に解決してもらえるはずです。

Kinstaをご利用のお客様の場合、何かお困りでしたら、24時間365日、管理画面の右側のボタンをクリックするだけで経験豊富なサポートチームにお問い合わせができます。サポートは今のところ、英語とスペイン語に対応しています。

Kinstaでサポートを利用する

Kinstaでサポートを利用する

サーバーの設定を変更する

WordPressサイトでのアップロードに影響を与えるサーバーの設定はたくさん存在します。残念なことに、多くの説明記事で、これが誤解されており、必要以上に多くの設定の変更が推奨されてしまっています。PHPのドキュメンテーションによると、重要な3つのディレクティブは次の通りです。

post_max_size

upload_max_filesize

memory_limit

ドキュメンテーションでは、これらがどのように設定されるべきか明確に説明されています。

[post_max_size]は許容される投稿データの最大サイズを設定するものです。この設定はファイルのアップロードにも影響します。大きなファイルをアップロードするには、この値がupload_max_filesizeよりも大きくなければなりません。メモリ制限がconfigureスクリプトで有効になっている場合、memory_limitもファイルのアップロードに影響します。一般的に、memory_limitはpost_max_sizeよりも大きくなければなりません。

これら3つがアップロードしたいファイルサイズに合うように設定しなければなりません。最も大きなファイルが10MB程度の場合、upload_max_filesizeは12M(12MB)に、post_max_sizeは13Mに、memory_limitは15Mに設定することをおすすめします。MBの代わりに「M」という単位が利用されているのでご注意下さい。アップロードの際、ファイル自体に加え若干のテキスト情報も含まれるため、全ての値に少し余裕を持っておくといいでしょう。

変更すべき箇所が分かったところで、今度はそのやり方をご説明します。5つの方法がありますが、サーバーの設定によって、うまくいくものといかないものがある可能性があります。

選択肢1 – cPanelでPHPオプションを変更する

cPanelを使用しているレンタルサーバーであれば、UIから簡単に設定を変更できます。「ソフトウェア」から「Select PHP Version」をクリックします。

cPanelの「Select PHP version」

cPanelの「Select PHP version」「Switch to PHP Options」をクリックします。

Switch to PHP options

Switch to PHP optionsそれぞれのプロパティをクリックして値を変更することができます。完了したら「保存」をクリックします。

cPanelで最大アップロードサイズを増やす

cPanelで最大アップロードサイズを増やす

選択肢2 – php.iniファイルを作成または変更する

php.iniファイルはデフォルトでサーバーの設定を規定するファイルです。サーバーの制限によりphp.iniファイルが利用できず、.htaccessを利用した方法を用いる必要があることもあります。こちらについては後ほど解説します。php.iniファイルを編集するにはSSHまたはFTP経由でサイトにログインするか、サイトのルートディレクトリへ移動し、php.iniを開くか、新規でファイルを作成します。

php.iniファイル

php.iniファイルファイルが既に存在する場合、3つの設定を探し、必要に応じて値を変更します。新規でファイルを作成した場合や、これらの設定が見当たらない場合、次のコードを貼り付けます。もちろん値は必要に応じて変更してください。

upload_max_filesize = 12M
post_max_size = 13M
memory_limit = 15M

共用サーバー(共用ホスティングサービス)によっては、上記のphp.iniファイルの設定がうまく機能するには .htaccessファイルにsuPHPを追加しなければならないこともあります。そのためには、同じくサイトのルートに位置する.htaccessファイルを編集し、ファイルの上部に次のコードを追記します。

 
suPHP_ConfigPath /home/yourusername/public_html

選択肢3 – cPanelでphp.iniを編集する

cPanelを利用している場合、php.iniファイルはMultiPHP INI Editorを通して編集できる場合もあります。ソフトウェアからMultiPHP INI Editorを選択します。

MultiPHP INI Editor

MultiPHP INI Editorドロップダウンからホームディレクトリ(ドメインルート)を選択します。

MultiPHP INI Editorのホームディレクトリ

MultiPHP INI Editorのホームディレクトリupload_max_filesizeの値をより大きなものに変更します。

MultiPHP INI Editorのupload_max_filesize

MultiPHP INI Editorのupload_max_filesize

選択肢4 – .user.iniファイルを作成または変更する

上記の方法がうまくいかない場合、レンタルサーバー側がグローバル設定を変更できないようにしていて、代わりに.user.iniファイルを利用するよう設定している可能性があります。.user.iniファイルを編集するにはSSHまたはFTPからサイトにログインし、サイトのルートディレクトリを開き、.user.iniを開くか、新規で作成します。その後、次のコードを貼り付けます。

upload_max_filesize = 12M
post_max_size = 13M
memory_limit = 15M

選択肢5 – .htaccessファイルを作成または変更する

.htaccessファイルとは、それを設置したディレクトリと、その子階層におけるサーバーの挙動を変更できる、様々な設定が含まれた特別な隠しファイルです。上記のphp.iniを利用した方法がうまくいかない場合、次にこちらの方法を試してみましょう。まずは、SSHまたはFTP経由でサイトにログインし、ルートディレクトリに.htaccessファイルがあるかどうか見てみましょう。

.htaccessファイル

.htaccessファイル既に存在する場合、アップロード上限を増やすのに必要なコードを追加しましょう。

php_value upload_max_filesize 12M
php_value post_max_size 13M
php_value memory_limit 15M

上記の方法を試してみて「internal server error」のメッセージが表示される時は、サーバー側がCGIモードでPHPを実行している可能性が高く、その場合.htaccessファイルで上記のコマンドを利用することができません。

internal server error

Internal server error

選択肢6 – ini_set() PHP関数を利用する

最後の方法はあまりおすすめできませんが、他の方法が全てうまくいかない場合には試してみましょう。まずはSSHまたはFTP経由でサイトにログインし、通常サイトのルートに位置するwp-config.phpファイルを探します。

wp-config.phpファイル

wp-config.phpファイルwp-config.phpファイルに次のコードを追加します。

@ini_set( 'upload_max_size' , '12M' );
@ini_set( 'post_max_size', '13M');
@ini_set( 'memory_limit', '15M' );

理論上は、上記のコードをテーマのfunctionsファイルかプラグインのメインファイルに追加できますが、本来はどちらにもふさわしいコードではありません。とはいえ、最後の手段、もしくは暫定的な解決策としてはやってみる価値があるでしょう。

NGINXの設定

NGINXは古き良きApacheに代わる、ウェブサーバーソフトウェアです。Apacheよりも大幅な高速化が可能であるため、Kinstaでは全てのサーバーで利用しています。NGINXを利用しているサイトの場合、php.iniファイルとNGINX configファイルの両方を変更する必要があります。

php.iniファイルの変更方法は既に解説しましたので、ここではNGINX configに追記すべきコードをご紹介します。

http {
        client_max_body_size 13m;
}

HTTPグループにはたくさんの設定がありますが、意図しない変更を加えてしまわないように、client_max_body_sizeのパラメーターのみ編集するようにしましょう。最後に、変更が確実に適用されるよう、サービスの再起動をしておく必要があります。次のコマンドを実行すれば完了です。

service php5-fpm restart
service nginx reload 

Kinstaをご利用のお客様はNGINX configへアクセスすることができません。当社のサポートチームにお問い合わせいただければすぐに対応いたします。

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

もう一つの代替手段はWordPress 2.5で導入されたupload_size_limitフィルタを活用する方法です。次の一例は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 60 MB for users lacking the 'manage_options' capability.
    if ( ! current_user_can( 'manage_options' ) ) {
        // 60 MB.
        $size = 60 * 1024 * 1024;
    }
    return $size;
}
add_filter( 'upload_size_limit', 'filter_site_upload_size_limit', 20 );

ファイルの最大アップロードサイズを再確認する

上記の解決策がうまくいったかどうか確認する方法はいたって簡単です。「メディア」から「新規追加」をクリックします。「最大アップロードサイズ:25MB」などの短いメッセージが表示されているはずです。その数字の値が設定の変更に応じて変わっているはずです。今回の場合、最初は5MBが上限でしたが、今は次のとおり上限が25MBに増えています。

WordPressでファイルの最大アップロードサイズを確認する

WordPressでファイルの最大アップロードサイズを確認する

複数の箇所で変更を加える場合、手順を一つずつ行い、うまくいかなかった場合は都度、変更を元に戻すことをおすすめします。.htaccessファイルとphp.iniファイルは、CSSにおけるカスケードの概念と似ています。子ディレクトリで設定したpost_max_sizeは親ディレクトリの同じディレクティブを上書きします。確実に解決したくてあらゆる場所でディレクティブを定義すると混乱してしまう可能性があります。

代替案 – FTP経由でファイルをアップロードする

ご利用中のホスティングサービスで上限を引き上げるのに手こずっている場合、大きなファイルをFTP(SFTP)経由でアップロードしてから無料のAdd From Serverプラグインを活用する方法もあります。大きなファイルがいくつもある場合、これが一番早い方法でしょう。詳細については、ファイルをWordPressのメディアライブラリにFTP経由で一括アップロードする方法をご覧ください。

まとめ

ご覧の通り、WordPressの最大アップロードファイルサイズを増やすのはどこでどのコマンドを使用するかを知っていれば、そう難しいことではありません。この記事で、皆さんによる、WordPressサイトでの設定の変更、調整の仕方をサポートできましたら幸いです。ホスティングサービスやサーバーによってそれぞれ設定は異なりますので、今までファイルサイズの制限で困難な状況に陥った経験があるという方は、是非、どのように解決したかをご共有ください。


この記事が面白いと思った方は、KinstaのWordPressホスティングプラットフォームも大好きでしょう。ウェブサイトをスピードアップし、当社のベテランのWordPressチームからの24時間365日のサポートを是非ご利用ください。Google Cloudを使用したインフラストラクチャは、自動スケーリング、パフォーマンス、およびセキュリティに重点を置いています。Kinstaの魅力をご案内させてください。当社のプランをご確認ください。