WordPressのアップロード上限を引き上げる5つの方法
WordPressでメディアファイルをアップロードしようとしたとき、「上限を超えています」というエラーに遭遇したことはありませんか? WordPressのデフォルトのアップロード上限はサーバー環境によって異なりますが、多くの場合2MB〜64MBに設定されています。この記事では、アップロード上限を引き上げる5つの方法をコード例付きで解説します。
<strong>注意:</strong>設定変更前に必ずバックアップを取得してください。また、共有ホスティングでは一部の方法が使えない場合があります。
現在の上限を確認する
まず、現在の設定を確認しましょう。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 の設定を変更できます。
- ホスティングの管理パネルにログイン
- PHP設定、またはphp.ini設定のメニューを探す
- <code>upload_max_filesize</code> と <code>post_max_size</code> の値を変更
- 設定を保存し、必要に応じて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>