動画やPDFをアップロードしようとしたら、「〇〇 は、このサイトのアップロードサイズ上限を超えています。」と出て、先に進めない。
この上限は、WordPressではなく、サーバーのPHPの設定で決まっています。この記事の2016年版で紹介していた functions.php の書き方は、試すと効きませんでした。そこに書いていた「upload_max_size」も、PHPには無い設定名です。
まず、今の上限を確かめる
上限は、管理画面の2か所で確かめられます。
「メディアファイルを追加」の画面
「メディア」→「メディアファイルを追加」を開くと、「最大アップロードサイズ」(①)が表示されています。PHPの初期設定のままの検証サイトでは2MBでした。これより大きい3MBの画像を選ぶと、②のエラーが出ました。

サイトヘルスの「情報」
「ツール」→「サイトヘルス」→「情報」の「メディア処理」を開くと、もう少し詳しく分かります。

| 項目 | PHPの設定名 | 意味 |
| ① post データの最大サイズ | post_max_size | 1回の送信で受け取れるデータ全体の大きさ |
| ② アップロードファイルの最大サイズ | upload_max_filesize | 1つのファイルの大きさ |
| ③ 有効な最大ファイルサイズ | - | ①と②の小さいほう。実際の上限はこれ |
WordPressの本体のコードでも、上限は「upload_max_filesize と post_max_size の小さいほう」で決めています。上げるときは、2つの設定を両方とも上げます。片方だけ上げても、もう片方で止まります。
サイトヘルスの使い方は、こちらで紹介しています。
WordPressサイトのメンテナンスを行いたいなら、まずはサイトヘルス機能を使うのがおすすめです。 定期検診のようなイメージで、サイトの健康状態をチェックできます。問題があればすぐに対策できるので、安心して運営できます。 当記事では、サイトヘルスの見方や活用方法についてご紹介します。 ...
サーバーの管理画面で上げる
レンタルサーバーなら、管理画面にPHPの設定があります。主なサーバーの設定画面は次のとおりです。
| サーバー | 変える場所 |
| エックスサーバー | サーバーパネルの「PHP」→「php.ini設定」で、ドメインの「詳細設定」を開く。「その他の設定」に upload_max_filesize と post_max_size がある |
| ロリポップ! | ユーザー専用ページの「PHP設定」。upload_max_filesize を変えると、post_max_size も同時に変わる(CGI版のみ) |
| ConoHa WING | 「サイト管理」→「サイト設定」→「応用設定」→「PHP設定」の「php.ini編集」の欄に書き足す |
| さくらのレンタルサーバ | サーバーコントロールパネルの「スクリプト設定」→「php.ini設定」。memory_limit、post_max_size、upload_max_filesize の順に、大きいものから小さいものになるようにする |
php.iniに書き足す場合は、次の2行です。数字は必要な大きさに変えます。post_max_size は、upload_max_filesize と同じか、少し大きくします。
upload_max_filesize = 64M
post_max_size = 64M
post_max_size のほうが小さいと、サイトヘルスの「ステータス」にも警告が出ます。変えたら、もう一度サイトヘルスの「情報」を開いて、値が変わったことを確かめます。
参考:php.ini設定で設定可能な項目について(エックスサーバー)、PHP設定(ロリポップ!)、PHPの設定をする(ConoHa WING)、php.iniの設定内容を変更したい(さくらのレンタルサーバ)
メモリの上限(memory_limit)も、同じ画面で変えられます。メモリ不足のエラーが出ているときは、こちらもあわせて見てください。
WordPressサイトを操作していると、PHPメモリが足りなくなることがあります。 たとえば、次のようなケースが典型例です。 「ページの保存や設定変更が反映されない。」 「更新途中で止まったりする。」 「画像がアップロードできない。」 こうした問題は、PHPメモリや関連する上...
管理画面で変えられないときは「.user.ini」
サーバーの管理画面にPHPの設定が無いときは、WordPressを入れたフォルダ(wp-admin フォルダがある場所)に「.user.ini」というファイルを置く方法があります。中身は、上と同じ2行です。2016年版で紹介していた「php.iniを作って置く」方法は、今はこの .user.ini を使います。
.user.ini が読まれるのは、PHPをCGIやFastCGI(PHP-FPMなど)で動かしているサーバーだけです。初期設定では、変えた内容が反映されるまで最大5分かかります。
Localで作ったテストサイト(PHP-FPM、初期の上限は300MB)で試すと、ファイルを置いた直後に64MBに変わりました。
試すと効かなかった書き方、サーバーを選ぶ書き方
functions.php に ini_set を書く
テーマの functions.php に次のように書く方法が、以前のこの記事でも紹介されていました。
@ini_set( 'upload_max_size' , '50M' );
@ini_set( 'post_max_size', '50M' );
PHP 8.4で試すと、どちらも false が返り、値は変わりませんでした。upload_max_filesize と post_max_size は、プログラムの途中では変えられない設定です。PHPは、WordPressのコードが動く前にファイルを受け取り終えているためです。1行目の「upload_max_size」は、そもそもPHPに無い設定名です。
.htaccess に php_value を書く
php_value upload_max_filesize 64M
php_value post_max_size 64M
PHPのマニュアルでは、この書き方はPHPをApacheのモジュールとして動かしている場合のものです。LiteSpeedのサーバーでも読まれますが、PHPをCGIやFastCGIで動かしているApacheのサーバーでは使えず、サイト全体が「500 Internal Server Error」になることがあります(この記事では試していません)。
.htaccessを編集する前は、元のファイルを保存しておきます。
上限を上げても通らないとき
テーマのzipファイルなど、post_max_size を超える大きさのデータを送ると、送った内容が丸ごと捨てられ、「辿ったリンクは期限が切れています。」と表示されることがあります。この場合も、上の2つの設定を上げます。
PHPの設定を上げても「413 Request Entity Too Large」と出るときは、Webサーバー側(nginxなど)の上限です。これはサーバー会社にしか変えられません。
大きいファイルは、送るのに時間がかかって途中で止まることもあります。その場合は、同じ設定画面の max_execution_time(処理の最大時間)と max_input_time(受け取りの最大時間)も見直します。
上限そのものを上げられないときは、ファイルの側を小さくする方法もあります。画像なら圧縮し、動画はYouTubeなどに置いて埋め込みます。テーマやプラグインのzipなら、FTPで解凍したフォルダを wp-content の中に置けば、アップロードの上限は関係ありません。
Webサイトを運営していると、アップロードした画像が原因でページの表示速度が落ちてしまうことは少なくありません。 画像サイズを圧縮する定番プラグインが「TinyPNG(タイニーピング)」ですが、設定項目が多く、初期設定のまま使っている方も多いのではないでしょうか。 本記事では、TinyP...
まとめ
サーバーの管理画面で2つの値を必要な大きさにそろえたら、最初に断られたファイルをもう一度アップロードします。それでも通らないときは、出たエラーの文言で「上限を上げても通らないとき」の節を見てください。
WordPressテーマ集










