yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。
WordPress-logotype-standard

WordPress on BitnamiのAll-in-One WP Migrationのファイル容量制限を手動で解除する

2023-03-14

All-in-One WP Migrationを使ってImportをしようとするとファイル容量制限に引っかかったので、無料で容量制限を解除した話

※ この手順、簡単に見えて少しつまづいたので、試行錯誤した記録も合わせて記載します。
結論だけ知りたい方は、解決に飛んでくだせぇ


環境:Wordpress6.1.1
※ 利用AMI:WordPress Certified by Bitnami and Automattic 5.7.1-1
WordPress Certified by Bitnami and Automattic

問題

All-in-One WP Migrationを使ってImportをしようとするとファイル容量制限に引っかかった
20230307_bitnami_all-in-one-wp-migration_import_limit_1

よくみると、「Maximum upload file size: 80 MB.」と表示されている
20230307_bitnami_all-in-one-wp-migration_import_limit_2

「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 );
}

参考:wp_max_upload_size(): int


(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なのに、、

20230307_bitnami_all-in-one-wp-migration_import_limit_3

 
$ 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
$

再び確認するも変わらず、、
20230307_bitnami_all-in-one-wp-migration_import_limit_4


(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
$

来たーー!
20230307_bitnami_all-in-one-wp-migration_import_limit_5

20230307_bitnami_all-in-one-wp-migration_import_limit_6

おめでとう、自分。
以上。