WordPress「このサイトのアップロードサイズ上限を超えています」の対応方法
目次
WordPress の「このサイトのアップロードサイズ上限を超えています」の対処方法を説明します。メディアアップロードで失敗する原因の一つなので、WordPressを設置したら最初にこの設定もしておきましょう!
このサイトのアップロードサイズ上限を超えています。
WordPress の標準アップロードサイズの上限は、2MB までです。これは、PHP側の設定により、2MBまでと決められているからです。その設定を変更してあげることで、アップロードの上限を好きなだけ上げることが出来ます。
アップロードサイズの上限を上げる方法は2つ
「php.ini」 の設定を変える。
「.htaccess」 で設定をする。(初心者向け)
アップロードサイズの上限を上げるには、下記の3項目の値を変更します。
- upload_max_filesize = 2M
- アップロードされるファイルの最大サイズ
- post_max_size = 8M
- POSTデータに許可される最大サイズ
- memory_limit = 128M
- PHPプログラムが確保できる最大サイズ
※ アップロードサイズを、128MBギリギリに設定にする場合、「memory_limit」は128MBなので変更する必要がないように思えますが、memory_limit は、WordPressのプログラムを動かす為のメモリも含まれるので、「アップロードサイズ + α」として設定を変更してください。
アップロードサイズの上限を10MBにする例で説明します。
php.ini の値を変更してアップロードサイズを上げる
# vi/etc/php5/fpm/php.ini を修正します。
※サーバーの環境によって、php.iniの場所が異なります。
// アップロードされるファイルの最大サイズ
upload_max_filesize = 2M → upload_max_filesize = 10M
// POSTデータに許可される最大サイズ
post_max_size = 8M → post_max_size = 10M
// PHPプログラムが確保できる最大サイズ
memory_limit = 128M → 変更不要。
.htaccess でアップロードサイズを上げる(初心者向け)
.htaccess が使えない場合は、php.iniの値を変更してください。
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
// 下記の2行を追加します。
php_value upload_max_filesize 10M
php_value post_max_size 10M
アップロードがタイムアウトする場合
アップロードのタイムアウト初期値は「30秒」です。アップロードサイズが大きい場合、下記の値を変更・追加すればタイムアウトの時間を延長できます。「0」を設定すると無制限になります。
// php.ini の場合(変更)
max_execution_time = 30
max_input_time = 60
// .htaccess の場合(追加)
php_value max_execution_time 30
php_value max_input_time 60
max_execution_time = 30- スクリプトがパーサにより強制終了されるまでに許容される最大の時間
max_input_time = 60- スクリプトが POST、GET などの入力を パースする最大の時間を、秒単位で指定します。 これは、サーバー側で PHP が起動してからスクリプトの実行を開始するまでの時間です。
これで、WordPress「このサイトのアップロードサイズ上限を超えています」の対応が出来たと思います。
記事の「.htaccess で設定する方法」は、PHP を Apache のモジュール(mod_php)として動かしているときだけ使えます。今の多くのサーバーのように PHP-FPM で動かしている場合、php_value を書くと 500 エラーになります(Nginx はそもそも .htaccess を読みません)。PHP-FPM の場合は、php.ini か、設定を1つだけ書いたファイルで変えます。
# vi /etc/php/8.4/fpm/conf.d/90-upload.ini
upload_max_filesize = 64M
post_max_size = 64M
# systemctl restart php8.4-fpm
$ php-fpm8.4 -i | grep -E "upload_max_filesize|post_max_size"
Nginx を使っている場合は、Nginx 側の上限(既定 1MB)も上げないと、PHP に届く前に「413 Request Entity Too Large」になります。
# server { } の中
client_max_body_size 64m;
| 上限 | 場所 | 既定値 |
|---|---|---|
| upload_max_filesize | php.ini | 2M |
| post_max_size | php.ini | 8M |
| client_max_body_size | Nginx | 1m |
| memory_limit | php.ini | 128M |