ワードプレスでアップロードできるファイルサイズが大きすぎてエラー表示される場合は「.htaccess」に追記をすると上限サイズを大きくすることができます

この記事は約8分で読めます。

htaccess30mb200.jpgワードプレス(WordPress)で写真やPDFファイルなどをアップロードする際に「ファイルサイズが大きすぎます」という警告がでてアップロードできないことがあります。
この原因は、アップロードできるファイルサイズの上限が設定されているからです。使用しているレンタルサーバによってこの設定が違うようです。
例えば「さくらインターネット」のクイックインストールで設定したワードプレスでは5MBがアップロードできるファイルサイズの上限になっています。

アップロードできるファイルサイズ

ワードプレスでアップロードできるファイルの上限サイズ

さくらインターネットのクイックインストールで設定したワードプレス(WordPress)は、標準のままだとアップロードできるファイルの上限サイズが5MBになっています。

faileupload5mb.jpg

最近のiPhoneなどのスマホはカメラ性能が上がっていて、撮影した写真のファイルサイズが5MBを超えることがあります。その場合は写真画像がアップロードできずにエラーになってしまいます。

対策は、最大アップロードサイズを5MBから増やすことです。

ある処理をすると、この上限サイズを変更することができます。今回は最大アップロードサイズを30MBまで拡大しました。

faileupload30mb.jpg

最大アップロードサイズを増やす方法1

いくつか方法があるようですが、今回は「.htaccess」に追記する方法にしました。

さくらインターネットで常時SSL運営している場合は「.htaccess」ファイルの中身は以下のようになっています。

▼「.htaccess」ファイルの中身

# BEGIN Force SSL for SAKURA
# RewriteしてもHTTPS環境変数を有効にする
# SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1

# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteCond %{REQUEST_URI} !/wp-cron\.php$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
# END Force SSL for SAKURA
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>

# BEGIN WordPress
# `BEGIN WordPress` から `END WordPress` までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>

# END WordPress

このファイルに以下の3行を挿入します。

php_value memory_limit 50M
php_value post_max_size 40M
php_value upload_max_filesize 30M

今回は# BEGIN WordPressの上部に挿入しました。

▼追記した「.htaccess」ファイルの中身

# BEGIN Force SSL for SAKURA
# RewriteしてもHTTPS環境変数を有効にする
# SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1

# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteCond %{REQUEST_URI} !/wp-cron\.php$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
# END Force SSL for SAKURA
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>

php_value memory_limit 50M
php_value post_max_size 40M
php_value upload_max_filesize 30M

# BEGIN WordPress
# `BEGIN WordPress` から `END WordPress` までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>

# END WordPress

※追記した箇所の色を赤に変えていますが、実際は色を変える必要はありません。

こうして編集した「.htaccess」ファイルをFTPソフトで上書き保存すればOKです。

なお、「.htaccess」ファイルを操作する場合は、必ずファイルのバックアップを取っておき、もしものときに元に戻せる状況にしてから作業しましょう。「.htaccess」ファイルは重要なファイルなので、もし記述ミスがあると、ホームページがまったく見えなくなってしまうなどの深刻なエラーを起こすことがあるので要注意です。

最大アップロードサイズを増やす方法2

レンタルサーバが「さくらインターネット」の場合は、サーバーコントロールパネルから「php.ini」を編集することができますので、そこに3行追加すれば最大アップロードサイズを増やすことができます。

さくらインターネットの管理画面にログインし、サーバコントロールパネルを開きます。

ホーム→スクリプト設定→php.ini設定の順にクリックすると設定画面が表示されます。

sakuraphpini.jpg

PHPiniファイル設定という画面を見ると、当初は空白になっています。その空白部分に以下の3行を貼り付けます。

memory_limit = 128M
post_max_size = 120M
upload_max_filesize = 20M

ここでは、設定1との違いを確認するためにアップロード上限サイズを20MBとしました。

▼PHPiniファイル設定
sakuraphpini20mb.jpg

上記の画像の場所に

memory_limit = 128M
post_max_size = 120M
upload_max_filesize = 20M

を貼り付けて保存するだけです。

この状態で設定を保存すればOKです。
こっちのほうが設定1よりも簡単ですね。

設定は1か2のどちらかだけにする

さて、この「設定2」と上記の「設定1」の両方を設定すると、どちらの設定が優先されるのかが気になりました。

設定1では上限30MB
設定2では上限20MB
となっています。

ワードプレスのファイルアップロードで確認したところ、上限サイズは30MBと表示されていました。

なので、設定1のほうが優先されるようですね。

しかし、表示が30MBでも、実際は20MBで制限がかかる可能性もあります。なにより混乱するので、このような二重設定はやめたほうがいいですね。

設定は1か2かのどちらかだけにしましょう。

とくに、「.htaccess」ファイルの操作という意味がよくわからない方は、設定1のほうはやらないで、設定2のほうを選んだほうがいいと思います。その場合のファイルアップロードサイズは20MBでも30MBでもどちらにしてもよいですが、上記の設定2のままだと20MBになります。

もしも設定2でアップロードサイズを30MBにしたい場合は以下のように数値を変更しましょう。

▼PHPiniでファイルアップロード上限を30MBに変更する場合の設定

memory_limit = 128M
post_max_size = 120M
upload_max_filesize = 30M

この数値なら、ファイルアップロードサイズ上限は上記の設定1と同じ30MBになります。
よく似た記述ですが、設定1と設定2では違う数値を入れています。ご自身のサーバ環境に適した設定になるようにご注意ください。