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