【WordPress】メディアアップロードのサイズ上限を変更する方法

【WordPress】メディアアップロードのサイズ上限を変更する方法

みなさんこんにちは、花粉症を拗らせて体調を崩してるyamashitaです。
今まではほどほどの鼻水とくしゃみに悩まされていましたが、今年は夜も眠れないくらい鼻が詰まってそのまま死んでしまうのではと思いました。
さて、今回はWordPressのメディアアップロードのサイズ上限を変更する方法をご紹介します。
わかってしまえば大したことないのですが、そこそこ時間をかけてしまったため、反省するとともに遺したいと思います。

変更する方法

php.iniの設定、upload_max_filesizepost_max_sizeを変更することで、サイズ上限を設定できます。
他にも条件はありますが(※後述)この二つの値を比較して低い方がメディアアップロードのサイズの上限となります。

 post_max_size = 4M
 upload_max_filesize = 2M

のような記述があると思いますので数字部分を変更してください。
※各々記述されている行は離れています。
これで任意のサイズのファイルをメディアアップロード出来れば解決です。
しかし、php.iniで設定されていても他にも変更できる箇所があり、それらも確認する必要がある場合があります。

始めに注意点

各設定のサイズの比較

WordPressの処理上でupload_max_filesizepost_max_sizeを比較しているため今回はこの二つを変更します。
しかしこれらには、その性質上もう一つの設定も含めてサイズが以下の順番になっていなければなりません。

 ; メモリ使用量の上限 一番大きい
 memory_limit = 6M 
 ; POST時の使用サイズの上限 二番目に大きい
 post_max_size = 4M
 ; アップロードするファイルのサイズ上限 一番小さい
 upload_max_filesize = 2M

upload_max_filesizepost_max_sizeを変更すればいいはずですが、それでもうまくいかない場合はmemory_limitの値も確認して変更してみてください。

マルチサイトの場合はWordPress側の確認も必要(普段はPHPの設定のみ)

今までマルチサイトにあまり触れる事が無かったのですが、マルチサイトの場合のみ管理画面で設定できます。
その場合上に書いた設定を変更してPHP側でいくら上限を引き上げてもメディアアップロード画面のサイズ上限は変わりません。
私はメディアアップロードのサイズ上限を引き上げる方法を検索してこれに気付かずドツボにはまりました。

ini_set()では変更できない

PHPの設定を一時的に変更すると言えばiniset()ですよね。display_errorsをtrueにして開発中にエラーを確認するなどに便利です。
しかし、今回変更する必要のあるupload_max_filesizeはini
set()では変更できません。
functions.phpにini_set( 'upload_max_filesize' , '30M' );のように書いても変更されず、デフォルトの値が適用されます。
※以下のページを参照してください。
PHPの設定のリスト:http://php.net/manual/ja/ini.list.php
PHPの各設定を変更できる方法:http://php.net/manual/ja/configuration.changes.modes.php

確認する順番

設定は以下の順番で確認します。
1. WordPressの設定(マルチサイトの場合のみ)
2. .htaccess
3. httpd.conf
4. php.ini
順番は1番を除いて設定を最後に上書きする処理から確認していきます。
またざっくりとですが、影響範囲が小さい順でもあります。
1番はそこまで確認に手間取らなかったり、php側の設定とは別の設定なので先に確認したいです。
2番以下は設定した心当たりがなければ飛ばしても大丈夫でしょう。

1.WordPressの設定(マルチサイトの場合のみ)

注意点にも書きましたが、ここを無視して他の設定をしていくと永遠に終わりません。
WordPressの管理画面から
「参加サイト」>「サイトネットワーク管理」>「設定」
「サイトネットワークの設定」>「アップロード設定」>「アップロードファイルの最大サイズ」
上の手順で辿り着いた項目の値が任意の値以上であることを確認してください。
低い場合は任意の値以上に変更すればメディアアップロード画面で反映されています。

2. .htaccess

まずWordPressのインストールされているディレクトリに影響を及ぼすディレクトリに.htaccessが設置されているかを確認します。
設置されていたら以下の記述があるかを確認し、あれば任意の値に修正します。
また、記述が無い場合にも.htaccessで設定がしたい場合は以下の値を記述した.htaccessを設置すれば大丈夫です。

 php_value post_max_size "20M"

 php_value upload_max_filesize "10M"

ただし、.htaccessをこのためだけに使用するのであれば、個人的にはhttpd.confに記述する方がおすすめです。
httpd.confはapacheの起動時に一度読み込むだけに対して、.htaccessはリクエストがあるたびに読み込まれます。
そのためごくわずかではありますが、パフォーマンスが遅くなるかもしれません。

3.httpd.conf

前項目と同様にファイル内に設定した記述が無いか確認します。
記述が有れば任意の値に修正し、無ければ追記します。

<Directory /var/www/html>
    php_value post_max_size "20M"
    php_value upload_max_filesize "10M"
</Directory>

/var/www/htmlの部分はもちろんサイトのあるディレクトリかWordPressが設置されているディレクトリを指定してください。
最後にapacheを再起動すれば設定が反映されているはずです。

4.php.ini

php.iniは一番始めに記載しましたので詳しい方法は割愛します。
注意する点としてはphp.iniで変更してしまうとそのサーバー上で動くPHP全てにその値が適用されます。
vhostで複数のサイトを持っていたり、WordPressの管理画面以外の場所でファイルアップロード画面などを実装していると思わぬトラブルが発生することもあるので気を付けてください。

まとめ

今回の紹介は以上です。
気を付ける点としてはWordPressがマルチサイトの場合は独自の設定があるので気を付ける事と
今回の話に限ったことではないですが、PHPの設定は値を変更する箇所と優先順位、変更した時の影響範囲や、そもそも変更可能かどうかを確認することです。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ