コンテンツにスキップ

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

カテゴリ:WordPress

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

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

実効上限 = 各層の最小値 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管理画面の「メディア」→「新しいメディアファイルを追加」ページに、現在のアップロード上限が表示されています。また、「ツール」→「サイトヘルス」→「情報」→「サーバー」セクションでも、upload_max_filesizepost_max_size の値を確認できます。

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

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

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

方法2:.htaccess で設定

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

# .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 サーバーの場合は .htaccess が使えないため、サーバー設定ファイルで対応する必要があります。

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

方法3:php.ini で設定

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

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

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

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

方法4:functions.php で設定

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

// 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. upload_max_filesizepost_max_size の値を変更
  4. 設定を保存し、必要に応じてPHPを再起動

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

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

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

設定変更後のテスト

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

まとめ

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