WPのマルチサイト環境におけるメディアの最大アップロードサイズの仕組みと調整

投稿日:

サイトの管理画面の「メディアのアップロード」画面からの最大アップロードサイズが1MBまで、となっていた。

ググってみたところ、「デフォルトは2MBまで」との記載が多かったのだが、なぜ自身の環境では1MBなのか?
更に対応策として、これもググったところ、php.ini もしくはWPの.htaccessにて係る設定値の調整方法を解説しているサイトが多かったが、これでは調整は効かなかった。

最大アップロードサイズがWPの内部でどのように決まっているか気になったので、調べてみると、どうも/wp-include/media.php の関数wp_max_upload_size() で決まっている事が分かった。

次は当該関数のコード。

   2866 /**
   2867  * Determines the maximum upload size allowed in php.ini.
   2868  *
   2869  * @since 2.5.0
   2870  *
   2871  * @return int Allowed upload size.
   2872  */
   2873 function wp_max_upload_size() {
   2874         $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) );
   2875         $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) );
   2876 
   2877         /**
   2878          * Filters the maximum upload size allowed in php.ini.
   2879          *
   2880          * @since 2.5.0
   2881          *
   2882          * @param int $size    Max upload size limit in bytes.
   2883          * @param int $u_bytes Maximum upload filesize in bytes.
   2884          * @param int $p_bytes Maximum size of POST data in bytes.
   2885          */
   2886         return apply_filters( 'upload_size_limit', min( $u_bytes, $p_bytes ), $u_bytes, $p_bytes );
   2887 }
   2888 

コードをみてみると、phpのini_get でphp側の設定値を拾って、そこから最大アップロードサイズを決定している事が分かる。

最終的に最大アップロードサイズを決定しているのは、次のコード。

return apply_filters( 'upload_size_limit', min( $u_bytes, $p_bytes ), $u_bytes, $p_bytes );

第1パラメーターの「upload_size_limit」でファイルサイズ制限関連の関数を呼び出してるようだが、ググっても詳しい解説は出てこなかった。

なお、肝心の最大アップロードサイズの調整方法については、さらにググってみたら、どうもマルチサイト環境の仕様の範疇であり、管理画面に調整する為の項目があることが分かった。具体的には、メニュー「サイトネットワーク管理>設定>アップロードファイルの最大サイズ」の設定で変更できる、とのこと。自身の環境もこれに該当した。

参考

マルチサイト化したwordpressのファイルアップロード制限 - 気になる備忘録
http://blog.blog-studio.com/archives/111

関連するタグ

WP 4.9.8, マルチサイト, 最大アップロードサイズ