【WordPress】アップロード上限を変更する方法

【WordPress】アップロード上限を変更する方法 WordPress

WordPressで大きなファイルをアップロードしようとした際に、「アップロード上限を超えています」というエラーが表示されることがあります。この制限はサーバーの設定によって決まっており、デフォルトでは比較的低い値に設定されています。

本記事では、WordPressのアップロード上限を変更する方法を詳しく解説します。

スポンサーリンク

.htaccess を編集する(Apache環境)

共有サーバーを利用している場合、.htaccess を編集することでアップロード上限を変更できることがあります。

.htaccess
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value max_input_time 300
php_valueはPHP-FPM/FastCGI環境では500エラーの原因になる
php_valueディレクティブは、ApacheがPHPをmod_phpとして動かしている場合にのみ有効です。PHP-FPMやFastCGIでPHPを実行している環境(PHPバージョンをディレクトリごとに切り替えられるような、現代的な共有サーバーの多くが該当します)でこの記述を追加すると、サイト全体が500 Internal Server Errorで表示できなくなります。追加する前に、phpinfo()の「Server API」がApache moduleかFPM/CGIかを必ず確認してください。FPM/CGI環境では、代わりに.user.iniファイルを使います。
.user.ini(PHP-FPM/FastCGI環境向け・WordPressのルートディレクトリに配置)
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300
max_input_time = 300

.user.iniは反映までに数分かかる場合があります。すぐに反映されなくても、少し時間を置いてから再確認してください。

この方法はApache環境の共有サーバーで有効です。

php.ini を編集する

サーバーの設定を直接変更できる場合は、php.ini ファイルを編集するのが最も確実な方法です。以下の設定を追加または変更してください。

php.ini
upload_max_filesize = 128M
post_max_size = 128M
max_execution_time = 300

設定を適用する方法

変更を適用するには、サーバーを再起動する必要があります。

Apacheの場合

Apache(mod_php)の再起動
systemctl restart apache2

Nginxの場合

Nginxはphp.iniを直接解釈しません。Nginx+PHP-FPM構成では、php.iniの変更を反映するためにPHP-FPMを再起動する必要があります。

PHP-FPMの再起動
systemctl restart php-fpm
# バージョン番号付きのサービス名の場合は例えば以下
systemctl restart php8.2-fpm
# 念のためnginxも再起動しておくと安心
systemctl restart nginx

この方法はVPSや専用サーバーを使用している場合に有効です。

レンタルサーバーの管理画面から設定する

レンタルサーバーを使用している場合、管理画面からアップロード上限を変更できることがあります。

  • cPanel の場合 → 「PHP設定」> 「upload_max_filesize」
  • Plesk の場合 → 「PHP設定」> 「post_max_size」

これらの管理画面から数値を変更して保存するだけで適用されます。

functions.phpやwp-config.phpでは変更できないことが多い

「functions.phpやwp-config.phpにini_set('upload_max_filesize', '128M');を追記する」という方法も広く紹介されていますが、実はほとんどの環境で効果がありません。

upload_max_filesizeとpost_max_sizeはini_set()で変更できない
PHPの設定項目には、ini_set()で実行時に変更できる範囲(PHP_INI_ALL / PHP_INI_USER)と、php.ini・.htaccess・.user.iniなど設定ファイル側でしか変更できない範囲(PHP_INI_PERDIR / PHP_INI_SYSTEM)があります。upload_max_filesizepost_max_sizeはPHP_INI_PERDIRに分類されるため、functions.phpやwp-config.php内でini_set()を実行しても、エラーも出ないまま静かに無視されます。一方、max_execution_timeはPHP_INI_ALLのため、ini_set('max_execution_time', 300);をfunctions.phpに追加すれば実行時間の制限だけは変更できます。

プラグインで変更する

サーバーの管理画面もファイル編集もできないレンタルサーバーの場合は、「Increase Upload Max Filesize」のようなアップロード上限変更用のプラグインを使う方法もあります。多くはWordPress管理画面から設定できて手軽ですが、内部的には結局.htaccessや.user.iniの生成・書き換えを行っていることが多く、サーバー側がその方式に対応していない環境では効果がない点に注意してください。

変更が適用されたか確認する

設定が適用されたか確認するには、WordPressのメディアアップロード画面で確認できます。

  1. WordPressの管理画面にログイン
  2. 「メディア」→「新規追加」 に移動
  3. 「最大アップロードサイズ」 をチェック

関連記事

よくある質問(FAQ)

Qメディアのアップロード先フォルダーを変更するには?
Aupload_dirフィルターで保存パスとURLを変更できます。またはwp-config.phpにUPLOADS定数を定義する方法もあります。年/月のサブフォルダー構成を無効にするには管理画面の設定>メディアで設定を変更します。
Q投稿タイプごとに異なるアップロードフォルダーに振り分けるには?
Aupload_dirフィルター内で$_REQUEST[‘post_id’]やget_post_type()を確認し、投稿タイプに応じてbasedirとbaseurlを変更します。投稿に関連するアップロード時のみ適用する条件処理が必要です。
Q変更後の新しいアップロードパスに過去の画像も移動すべきですか?
A過去にアップロードした画像のURLはDBに記録されているため、ファイルを移動するだけではリンク切れになります。Search Replace DBツールで旧URLを新URLに一括置換するか、シンボリックリンクで対応する方法があります。

まとめ

WordPressのアップロード上限を変更する方法はいくつかあります。環境に応じて適切な方法を選択してください。

方法 適用可能な環境
php.ini 編集 VPS, 専用サーバー
.htaccess 編集 Apache + mod_php環境の共有サーバー(PHP-FPM環境では500エラーの原因になるため要注意)
.user.ini 編集 PHP-FPM/FastCGI環境の共有サーバー
cPanel, Plesk レンタルサーバー
プラグイン使用 レンタルサーバー(ファイル編集不可の場合)

サーバーの設定によっては、php.ini の変更が最優先される場合があるので、試しながら調整してみてください。upload_max_filesizepost_max_sizeはfunctions.phpやwp-config.phpのini_set()では変更できない点にも注意してください。