コンテンツにスキップ

WordPressのアップロード上限を引き上げる5つの方法

カテゴリ:WordPress

WordPressでメディアファイルをアップロードしようとしたとき、「上限を超えています」というエラーに遭遇したことはありませんか? WordPressのデフォルトのアップロード上限はサーバー環境によって異なりますが、多くの場合2MB〜64MBに設定されています。この記事では、アップロード上限を引き上げる5つの方法をコード例付きで解説します。

<strong>注意:</strong>設定変更前に必ずバックアップを取得してください。また、共有ホスティングでは一部の方法が使えない場合があります。

実効上限 = 各層の最小値 nginx client_max_body_size e.g. 64m php.ini post_max_size e.g. 64M php.ini upload_max_filesize e.g. 32M WP_MEMORY_LIMIT (wp-config) e.g. 256M → 実効上限 32 MB(最小値)
図: WordPress のアップロード上限を決める設定階層

現在の上限を確認する

まず、現在の設定を確認しましょう。WordPress管理画面の「メディア」→「新しいメディアファイルを追加」ページに、現在のアップロード上限が表示されています。また、「ツール」→「サイトヘルス」→「情報」→「サーバー」セクションでも、<code>upload_max_filesize</code> と <code>post_max_size</code> の値を確認できます。

方法1:wp-config.php で設定

最も手軽な方法です。WordPress のルートディレクトリにある <code>wp-config.php</code> に以下の行を追加します。

// wp-config.php に追加(「編集が必要なのはここまでです」の行の上に記述)
@ini_set('upload_max_filesize', '64M');
@ini_set('post_max_size', '64M');
@ini_set('max_execution_time', '300');
@ini_set('max_input_time', '300');

この方法は PHP の <code>ini_set()</code> を利用するため、サーバーの設定によっては反映されない場合があります。特に、<code>php.ini</code> でこれらの値が固定されている環境では効果がありません。

方法2:.htaccess で設定

Apache サーバーを使用している場合、<code>.htaccess</code> ファイルで PHP の設定を上書きできます。WordPress のルートディレクトリにある <code>.htaccess</code> に以下を追加します。

# .htaccess に追加
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300
php_value memory_limit 256M

Nginx サーバーの場合は <code>.htaccess</code> が使えないため、サーバー設定ファイルで対応する必要があります。

# Nginx の設定(/etc/nginx/conf.d/ 配下)
client_max_body_size 64m;

方法3:php.ini で設定

サーバーの PHP 設定ファイルを直接編集できる場合、最も確実な方法です。<code>php.ini</code>(または <code>.user.ini</code>)に以下を記述します。

; php.ini に追記
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
memory_limit = 256M

共有ホスティングでは <code>php.ini</code> を直接編集できないことがあります。その場合、WordPress のルートディレクトリに <code>.user.ini</code> を作成して同じ内容を記述すると反映される場合があります。

<strong>ポイント:</strong><code>post_max_size</code> は <code>upload_max_filesize</code> より大きい値に設定してください。<code>post_max_size</code> はフォームデータ全体の上限であり、ファイル本体に加えてフォームフィールドやオーバーヘッドも含まれます。

方法4:functions.php で設定

テーマの <code>functions.php</code> にフィルターを追加する方法です。テーマを更新すると設定が消えるため、子テーマまたはカスタムプラグインでの実装を推奨します。

// functions.php または カスタムプラグインに追加
@ini_set('upload_max_filesize', '64M');
@ini_set('post_max_size', '64M');

// WordPress のアップロードサイズフィルター
add_filter('upload_size_limit', function($size) {
    return 64 * 1024 * 1024; // 64 MiB
});

// マルチサイトの場合
add_filter('upload_size_limit', function($size) {
    return 64 * 1024 * 1024;
}, 20);

方法5:ホスティングパネルで設定

多くのレンタルサーバーやホスティングサービスでは、管理パネル(cPanel、Plesk、ConoHa、エックスサーバーなど)から PHP の設定を変更できます。

  1. ホスティングの管理パネルにログイン
  2. PHP設定、またはphp.ini設定のメニューを探す
  3. <code>upload_max_filesize</code> と <code>post_max_size</code> の値を変更
  4. 設定を保存し、必要に応じてPHPを再起動

この方法が最も確実で、サーバーレベルで設定が適用されるため、他の方法で上書きされる心配がありません。

設定が反映されないときの確認ポイント

  • Webサーバー(Apache/Nginx)を再起動したか
  • PHP-FPM を使っている場合、PHP-FPM も再起動したか
  • CDN やリバースプロキシがリクエストサイズを制限していないか
  • WordPress のマルチサイトでは、ネットワーク管理画面の設定が優先されることがある
  • <code>post_max_size</code> が <code>upload_max_filesize</code> 以上になっているか

設定変更後のテスト

アップロード上限を変更したら、必ず実際のファイルでテストしましょう。DevLab では各サイズのテストファイルを提供しています。

  • <a href="/ja/reference/wordpress-upload-limit/">WordPress アップロード上限リファレンス</a> — 各ホスティング環境のデフォルト上限一覧
  • <a href="/ja/files/threshold/">境界値テスト用ファイル</a> — 上限ちょうどのサイズでテスト
  • <a href="/ja/files/images/">画像テストファイル</a> — 実際のメディアアップロードで検証

まとめ

WordPressのアップロード上限を引き上げる方法は複数ありますが、サーバー環境によって使える方法が異なります。まずはホスティングパネルでの設定を試み、それが使えない場合は <code>.htaccess</code> や <code>php.ini</code> で対応しましょう。設定変更後は、DevLab のテストファイルを使って実際にアップロードが成功することを確認してください。

この記事で使えるテストファイル

  • → <a href="/ja/files/threshold/" class="text-primary-600 dark:text-primary-400 hover:underline">しきい値テスト用ファイル一覧(9.9MB / 10MB / 10.1MB)</a>
  • → <a href="/ja/files/images/jpg/" class="text-primary-600 dark:text-primary-400 hover:underline">JPEG画像テストファイル一覧</a>

関連記事

  • → <a href="/ja/blog/how-to-test-upload-limit/" class="text-primary-600 dark:text-primary-400 hover:underline">ファイルアップロード上限を正しくテストする方法</a>
  • → <a href="/ja/blog/mb-vs-mib-file-size/" class="text-primary-600 dark:text-primary-400 hover:underline">MBとMiBは違う!ファイルサイズ単位の落とし穴</a>