WordPress on BitnamiのAll-in-One WP Migrationのファイル容量制限を手動で解除する
All-in-One WP Migrationを使ってImportをしようとするとファイル容量制限に引っかかったので、無料で容量制限を解除した話
※ この手順、簡単に見えて少しつまづいたので、試行錯誤した記録も合わせて記載します。
結論だけ知りたい方は、解決に飛んでくだせぇ
※ 利用AMI:WordPress Certified by Bitnami and Automattic 5.7.1-1
WordPress Certified by Bitnami and Automattic
問題
All-in-One WP Migrationを使ってImportをしようとするとファイル容量制限に引っかかった
よくみると、「Maximum upload file size: 80 MB.」と表示されている
「How-to: Increase maximum upload file size」のリンクをクリックすると
無料で制限解除する方法がいくつかあり
「3. Do it yourself (hard)」の方法が無料で制限解除できるので試すことにした
※ リンク先ページ:How to Increase Maximum Upload File Size in WordPress
試行錯誤
(1)80M制限を定義している変数を探す
先程確認したページに従って、「wp-config.php」を書き換えようとするが「upload_max_filesize」などの記述が見つからない
(追記しても制限変わらなかった)
参考:How to Increase Maximum Upload File Size in WordPress
変更ファイルの場所がわからないので、All-in-One WP Migrationの画面の「80MB」が何を元に表示されているのか地道に確認する
プラグインの中身を確認すると、「wp_max_upload_size()」という関数から引っ張ってきているぽい
$ cat ~/apps/wordpress/htdocs/wp-content/plugins/all-in-one-wp-migration/lib/view/import/pro.php | grep "Maximum upload file size:" <?php printf( __( 'Maximum upload file size: <strong>%s</strong>.', AI1WM_PLUGIN_NAME ), esc_html( ai1wm_size_format( wp_max_upload_size() ) ) ); ?> $
「wp_max_upload_size() 」で検索すると、「media.php」というファイル内で、
ini_get()を使って「upload_max_filesize」と「post_max_size」の値をとっている
function wp_max_upload_size() { $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) ); $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) ); /** * Filters the maximum upload size allowed in php.ini. * * @since 2.5.0 * * @param int $size Max upload size limit in bytes. * @param int $u_bytes Maximum upload filesize in bytes. * @param int $p_bytes Maximum size of POST data in bytes. */ return apply_filters( 'upload_size_limit', min( $u_bytes, $p_bytes ), $u_bytes, $p_bytes ); }
(2)変数「upload_max_filesize」と「post_max_size」の中身を直接確認する
以下の手順で、自分でオリジナルテーマを作って、変数の中身確認してみる
今回index.phpには以下を記載する
$ vi ~/apps/wordpress/htdocs/wp-content/themes/test/index.php $ cat ~/apps/wordpress/htdocs/wp-content/themes/test/index.php <div>upload_max_filesize: <?php echo ini_get( 'upload_max_filesize' ); ?></div> <div>post_max_size: <?php echo ini_get( 'post_max_size' ); ?></div> <div><?php echo phpinfo(); ?></div> $
結果、80Mになっとる、
Loaded Configuration File(/opt/bitnami/php/etc/php.ini)の中身を確認すると40Mなのに、、
$ cat /opt/bitnami/php/etc/php.ini | egrep "upload_max_filesize|post_max_size" post_max_size = 40M upload_max_filesize = 40M $
(3)php.iniの「upload_max_filesize」と「post_max_size」設定値を変更する(うまくいかなかった)
もやもやしたまま、「/opt/bitnami/php/etc/php.ini」の設定を40M→3Gに変更してみる
$ mkdir ~/backup $ cp --parents /opt/bitnami/php/etc/php.ini ~/backup/ $ diff /opt/bitnami/php/etc/php.ini ~/backup/opt/bitnami/php/etc/php.ini $ $ sudo vi /opt/bitnami/php/etc/php.ini $ diff /opt/bitnami/php/etc/php.ini ~/backup/opt/bitnami/php/etc/php.ini 694c694 < post_max_size = 3072M --- > post_max_size = 40M 846c846 < upload_max_filesize = 3072M --- > upload_max_filesize = 40M $
設定反映のためBitnamiを再起動する
参考:Start Or Stop Services
$ sudo /opt/bitnami/ctlscript.sh status php-fpm already running apache already running mysql already running $ sudo /opt/bitnami/ctlscript.sh restart Syntax OK /opt/bitnami/apache2/scripts/ctl.sh : httpd stopped /opt/bitnami/php/scripts/ctl.sh : php-fpm stopped /opt/bitnami/mysql/scripts/ctl.sh : mysql stopped /opt/bitnami/mysql/scripts/ctl.sh : mysql started at port 3306 /opt/bitnami/php/scripts/ctl.sh : php-fpm started Syntax OK /opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80 $ sudo /opt/bitnami/ctlscript.sh status php-fpm already running apache already running mysql already running $
再び確認するも変わらず、、
(4)「upload_max_filesize」と「post_max_size」を定義しているファイル(php.iniの設定を上書きしているファイル)を捜索
多分どこかで
ini_set( 'upload_max_filesize' , '80M' ); ini_set( 'post_max_size', '80M');
のようなことがされて、php.iniの設定が上書きされているはずなので、ありかを探す
「$ grep -r 80M」で地道に探していると、設定されているファイル(php-settings.conf)を発見!!(お前かーーー)
$ cat /home/bitnami/apps/phpmyadmin/conf/php-fpm/php-settings.conf php_value[upload_max_filesize]=80M php_value[post_max_size]=80M $
解決
php-settings.confを3G(3072M)に変更する
$ cp --parents /home/bitnami/apps/phpmyadmin/conf/php-fpm/php-settings.conf ~/backup/ $ vi /home/bitnami/apps/phpmyadmin/conf/php-fpm/php-settings.conf $ diff /home/bitnami/apps/phpmyadmin/conf/php-fpm/php-settings.conf ~/backup/home/bitnami/apps/phpmyadmin/conf/php-fpm/php-settings.conf 1,2c1,2 < php_value[upload_max_filesize]=3072M < php_value[post_max_size]=3072M --- > php_value[upload_max_filesize]=80M > php_value[post_max_size]=80M $
Bitnamiを再起動して設定反映
$ sudo /opt/bitnami/ctlscript.sh status php-fpm already running apache already running mysql already running $ sudo /opt/bitnami/ctlscript.sh restart Syntax OK /opt/bitnami/apache2/scripts/ctl.sh : httpd stopped /opt/bitnami/php/scripts/ctl.sh : php-fpm stopped /opt/bitnami/mysql/scripts/ctl.sh : mysql stopped /opt/bitnami/mysql/scripts/ctl.sh : mysql started at port 3306 /opt/bitnami/php/scripts/ctl.sh : php-fpm started Syntax OK /opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80 $ sudo /opt/bitnami/ctlscript.sh status php-fpm already running apache already running mysql already running $
来たーー!
おめでとう、自分。
以上。