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