本文へスキップ
設定

WordPressのアップロード上限を上げる方法(全サーバー対応)

WordPress の現在のアップロード上限を確認し、サーバーに合った場所で引き上げる方法を解説。php.ini、.user.ini、.htaccess、cPanel、Nginx、Cloudflare に対応。

公開 更新

WordPress のアップロード上限を上げるには、PHP の2つの設定 upload_max_filesize と post_max_size を、ホスティングが実際に読み込んでいる設定ファイルで引き上げます。自分で管理するサーバーなら php.ini、PHP-FPM や FastCGI で動く多くの共用サーバーなら .user.ini、Apache が PHP をモジュールとして動かしている場合のみ .htaccess、cPanel なら MultiPHP INI Editor です。サーバーが Nginx なら client_max_body_size も上げてください。wp-config.php を編集してもアップロード上限は変わりません。

WordPress 最大アップロードサイズツールを使えば、目標のサイズを1つ入れるだけで php.ini(または .user.ini)、.htaccess、wp-config.php 用の値が出力されるので、手で打たずに貼り付けるだけで済みます。

ステップ1:現在のアップロード上限を確認する

何かを変える前に、今の上限がいくつで、どの設定がそれを決めているのかを確認します。

  • メディア > 新規追加。 アップロード画面に最大アップロードサイズが表示されます。これが引き上げたい数字です。
  • ツール > サイトヘルス > 情報。 「メディア処理」を展開します。サイトヘルスのドキュメントによると、そこには POST データの最大許容サイズ、アップロードファイルの最大サイズ、そして2つのうち小さいほうである実際の最大ファイルサイズが表示されます。「サーバー」セクションには、ほかの PHP の値も表示されます。
WordPress の Upload Media 画面。アップロード領域の下に Maximum upload file size: 2 GB という行がある
アップロード画面では、上限はアップロード領域の下に表示されます。2 GB はテストサーバーの値で、多くのホスティング会社はこれよりずっと低く設定しています。
WordPress のサイトヘルス情報の Media Handling セクション。max size of post data allowed、max size of an uploaded file、max effective file size が並んでいる
テストサイトのツール > サイトヘルス > 情報 > メディア処理です。投稿データ、アップロードファイル、実効の上限がそれぞれ別の行に表示されています。

WordPress は wp_max_upload_size() で上限を計算します。この関数は PHP から upload_max_filesize と post_max_size を読み取り、小さいほうを使います。一方が 64M でもう一方が 8M なら、上限は 8M です。

ステップ2:関係する設定を知る

設定制限する対象PHP の初期値変更できる場所
upload_max_filesizeアップロードする1ファイルの最大サイズ2Mphp.ini、.user.ini、.htaccess、httpd.conf
post_max_sizeファイルを含む POST リクエスト全体8Mphp.ini、.user.ini、.htaccess、httpd.conf
memory_limit実行中に PHP が使えるメモリ128Mどこでも可(wp-config.php を含む)
max_execution_timeスクリプトの最大実行秒数30どこでも可(wp-config.php を含む)
client_max_body_size(Nginx)Nginx が受け付けるリクエスト本文1mNginx の設定のみ

PHP の初期値と変更モードは php.ini ディレクティブ一覧、Nginx の初期値は Nginx コアモジュールのドキュメントによるものです。多くのホスティングは PHP の初期値より高い値を設定しているので、実際の数字はサイトヘルスで確認しましょう。

upload_max_filesize と post_max_size は、PHP が INI_PERDIR と呼ぶ設定です。php.ini、.htaccess、httpd.conf、.user.ini でのみ設定でき、それ以外の場所では設定できません。memory_limit はファイルサイズを制限しませんが、WordPress は大きな画像のリサイズ版を作るのにメモリを使うため、大きなファイルは届いた後にメモリ不足エラーで失敗することがあります。

ステップ3:ホスティングに合った場所で上限を上げる

環境設定する場所補足
VPS または専用サーバーPHP が実際に読み込んでいる php.ini変更後に PHP-FPM か Apache を再起動
PHP-FPM や FastCGI の共用サーバーWordPress のルートにある .user.ini反映まで最大5分かかることがある
PHP をモジュールで動かす Apache(mod_php)php_value を書いた .htaccessPHP-FPM や FastCGI では 500 エラーになる
cPanel のホスティングSoftware > MultiPHP INI Editorphp.ini、.user.ini、.htaccess を代わりに書き込む
PHP の手前に NginxPHP の値に加えて client_max_body_size設定しないと Nginx が 413 を返す
マネージド WordPress ホスティングホスティングの管理画面またはサポートプラットフォーム全体でアップロードを制限している場合が多い
Cloudflare 経由のサイトCloudflare 独自のアップロード上限Free と Pro プランは 100 MB

php.ini(自分で管理するサーバー)

まず読み込まれているファイルを特定します。<?php phpinfo(); と書いた一時ファイルを作ってブラウザーで開き、「Loaded Configuration File」の行を確認したら、そのファイルは削除してください。その php.ini を編集します。

upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300

変更を読み込ませるために PHP を再起動します。PHP-FPM ではサービス名にバージョンが入ります。Debian や Ubuntu なら、たとえば sudo systemctl restart php8.3-fpm です。mod_php なら Apache を再起動します。

.user.ini(多くの共用サーバー)

PHP が .user.ini ファイルを読むのは、CGI または FastCGI(PHP-FPM を含む)として動いているときだけです。wp-config.php があるフォルダーに .user.ini を作成または編集します。

upload_max_filesize = 128M
post_max_size = 130M

PHP はこのファイルを user_ini.cache_ttl 秒ごとに読み直します。初期値は 300 です。うまくいかなかったと判断する前に5分待つか、可能なら PHP-FPM を再起動してください。

.htaccess(mod_php の Apache のみ)

php_value upload_max_filesize 128M
php_value post_max_size 130M

PHP マニュアルでは、これらのディレクティブは Apache モジュールとして動く PHP 向けと説明されています。保存した直後にサイトが 500 Internal Server Error になったら、PHP は FastCGI か PHP-FPM で動いています。その行を削除し、代わりに .user.ini を使ってください。

cPanel の MultiPHP INI Editor

cPanel で Software > MultiPHP INI Editor を開き、ドメインを選んで Basic Mode で値を変更します。cPanel のドキュメントによると、Basic Mode は php.ini、.user.ini、.htaccess のうち、その設定に対応しているファイルに保存するので、サーバーがどのファイルを使っているかを知らなくても大丈夫です。

Nginx

Nginx は PHP に渡す前にリクエストのサイズを確認します。リクエストが client_max_body_size を超えると、Nginx は 413 Request Entity Too Large を返します。初期値は 1m です。server ブロックに、少なくとも post_max_size と同じ大きさの値を追加します。

client_max_body_size 130M;

sudo nginx -t && sudo systemctl reload nginx でテストしてリロードします。Apache で同様の設定は LimitRequestBody ですが、一般的な WordPress ホスティングで変更が必要になることはまずありません。

マネージドホスティングと Cloudflare

マネージド WordPress ホスティングの中には、php.ini や .user.ini を無視してプラットフォーム全体で上限を決めているところがあります。変更後もサイトヘルスに古い数字が表示されるなら、上限はいくつか、引き上げてもらえるかをホスティング会社に問い合わせてください。

サイトが Cloudflare を経由している場合、Cloudflare にも独自の上限があります。キャッシュのドキュメントでは、最大アップロードサイズは Free と Pro プランで 100 MB、Business で 200 MB、Enterprise で最大 5 GB とされています。どの PHP 設定でもこれは超えられません。

wp-config.php ではうまくいかない理由

多くの記事が、wp-config.php に次の行を追加するよう勧めています。

@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );

どちらの設定も INI_PERDIR で、PHP のドキュメントにはこのモードの設定は ini_set() では設定できないと書かれています。@ が失敗を隠すので、この行は無害に見えますが何も変わりません。wp-config.php で変えられるのはメモリです。memory_limit はどこでも設定できるからです。

define( 'WP_MEMORY_LIMIT', '256M' );

これは大きな画像が処理中に失敗する場合に役立ちます。最大アップロードサイズは変わりません。

ステップ4:変更を確認する

メディア > 新規追加を再読み込みし、最大アップロードサイズが新しい値になっているか確認します。変わっていない場合:

  • post_max_size が upload_max_filesize 以上になっているか確認します。WordPress は小さいほうを使います。
  • PHP が実際に読み込んでいるファイルを編集したか確認します。別のフォルダーにある php.ini は無視されます。
  • .user.ini を変更したなら5分待つか、PHP-FPM を再起動します。
  • WordPress の数字は変わったのにアップロードが 413 で失敗する場合、止めているのは Nginx、ホスティングのプロキシ、または Cloudflare です。
  • アップロードが WordPress まで届いた後で「HTTP エラー」になる場合、もうサイズの問題ではありません。よくある原因は WordPress の画像アップロード時の HTTP エラーのガイドで解説しています。

上限はどこまで上げるべきか

実際にアップロードする必要がある最大のファイルに少し余裕を持たせた値にし、post_max_size は upload_max_filesize より少し大きくしておきます。大きなファイルはアップロードにも時間がかかるので、遅い回線でタイムアウトするなら max_execution_time も上げてください。長い動画やバックアップアーカイブのような非常に大きなファイルは、ブラウザーで一度に巨大なアップロードをするより、SFTP や分割アップロードのプラグインを使うほうが通常は確実です。Cloudflare のプラン上限で、そもそもブラウザー経由が使えないこともあります。

目標のサイズが決まったら、最大アップロードサイズツールが対応する PHP の設定行を書き出してくれます。サーバーが Nginx の場合は、このガイドの Nginx の行をご自身で追加してください。

FAQ

よくある質問

WordPress の現在のアップロード上限はどこで確認できますか?

メディア > 新規追加を開くと、アップロード画面に最大アップロードサイズが表示されます。詳しく知りたいときは、ツール > サイトヘルス > 情報を開いて「メディア処理」を展開してください。アップロードファイルの最大サイズ、POST データの最大サイズ、そして2つのうち小さいほうである実際の最大ファイルサイズが表示されます。

「アップロードしたファイルは php.ini の upload_max_filesize ディレクティブを超えています」と表示されるのはなぜですか?

ファイルが PHP の upload_max_filesize 設定より大きいためです。この上限は WordPress が決めているのではなく、PHP から読み取っています。php.ini、.user.ini、または mod_php の Apache なら .htaccess で、upload_max_filesize と post_max_size を一緒に引き上げてください。PHP 自体の upload_max_filesize の初期値はわずか 2M ですが、多くのホスティングではもっと高い値が設定されています。

wp-config.php でアップロード上限を上げられますか?

できません。upload_max_filesize と post_max_size は PHP_INI_PERDIR の設定で、PHP は php.ini、.htaccess、httpd.conf、.user.ini からしか受け付けません。wp-config.php に ini_set() の行を書いてもエラーは出ず、何も変わりません。wp-config.php で WordPress のメモリ上限は上げられますが、ファイルサイズを制限しているのはメモリではありません。

PHP の上限を上げたのに 413 Request Entity Too Large が出るのはなぜですか?

PHP より手前にある何かがリクエストを拒否しています。Nginx の場合は client_max_body_size で、初期値は 1m、超えると 413 エラーを返します。server ブロックでこの値を上げて Nginx をリロードしてください。サイトが Cloudflare を経由している場合は、プランのアップロードサイズ上限でもサーバーに届く前にリクエストが止められることがあります。

post_max_size は upload_max_filesize より大きくする必要がありますか?

少なくとも同じ大きさにし、少し大きめにしておくのが安全です。ファイルはほかのフォームデータと一緒に POST リクエストで送られるため、リクエスト全体が post_max_size の対象になります。WordPress は2つの値の小さいほうをアップロード上限として使うので、upload_max_filesize だけを上げても上限は変わりません。