
WordPress引っ越しメモ
CentOS7
WordPress 4.7.26
php 5.4.16
から
AlmaLinux 8
WordPress 6.7
php 8.2.10
にお引越ししました。
—————————————————
1)準備
—————————————————
MySQLのrootのパスワードを設定
mysqladmin -u root password rootpasswd
mysqladmin -p -u root -h localhost password rootpasswd
Enter password: rootpasswd
mysqladmin -p reload
Enter password: rootpasswd
次にWordPress用のMySQLのユーザを作成
mysql -u root -p
Enter password: rootpasswd
mysql> grant all privileges on *.* to wp@localhost identified by ‘wppasswd’;
mysql> exit
WordPress用のMySQLデータベースwordpressの作成
mysql -u wp -p
Enter password: wppasswd
mysql> create database wp default character set utf8;
mysql> exit
MySQLのデータを旧サーバからコピー
wpユーザのwpデータベースをコピーする
新規サーバにて作業
cd /tmp
ssh hoge@(旧サーバ) “mysqldump -u wp -p wp” | cat > wpdump.sql
password : wppasswd
MySQLのデータを復元
mysql -u wp -p wp< wpdump.sql
password : wppasswd
—————————————————
2)次はWordPress本体をゲット
—————————————————
cd /usr/local/src
wget https://ja.wordpress.org/latest-ja.tar.gz
tar zxvf latest-ja.tar.gz
cp -R ./wordpress/* /var/www/html/
chown -R apache:apache /var/www/html/
初期設定
cd /var/www/html
cp wp-config-sample.php wp-config.php
vi wp-config.php
/* WordPress のデータベース名 */
define(‘DB_NAME’, ‘wp’);
/* MySQL のユーザー名 */
define(‘DB_USER’, ‘wp’);
/* MySQL のパスワード */
define(‘DB_PASSWORD’, ‘wppasswd’);
—————————————————
3)テーマとプラグインとデータをコピー
—————————————————
テーマのコピー
旧サーバからコピーする
新規サーバにて作業
cd /usr/local/src
ssh hogeuser@(旧サーバ) “cd /var/www/html; tar -czvf – wp-content/themes/hogethemes” | tar -zvxf –
プラグインをコピー
cd /var/www/html
ssh hogeuser@(旧サーバ) “cd /var/www/html; tar -czvf – wp-content/plugins” | tar -zvxf –
データをコピーする
ssh hogeuser@(旧サーバ) “cd /var/www/html; tar -czvf – wp-content/uploads” | tar -zvxf –
—————————————————
4)トラブルシューティング
—————————————————
新サーバのWordPressにアクセス
http://(新サーバ) /wp-admin
ここでインターナルサーバエラー(500)が発生
/var/log/httpd/access_logを見てもよくわからない
phpのトラブルらしいので
/var/log/php-fpm/www-error.logを見てみる
ちなみにAlmaLinux8は、httpdとphpの通信のためphp-fpmというのを使っている
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported in /var/www/html/wp-content/plugins/count-per-day/counter-core.php on line 1520
count-per-dayと言うプラグインを使っていたが、これがphp8に対応していない
すでにサポートもされていない
本来なら、引っ越す前にこのプラグインを使わないようにしておけばよかったのだが、すでに手遅れ
なので、counter-core.phpを修正
Arrayに{ }は使えなくなったので[ ]に修正
< $last = strtolower($val{strlen($val)-1});
—
> $last = strtolower($val[strlen($val)-1]);
—————————————————
もう一度新サーバのWordPressにアクセス
http://(新サーバ) /wp-admin
再度インターナルサーバエラー(500)が発生
/var/log/php-fpm/www-error.logを見てみる
PHP Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/html/wp-content/themes/core_tcd027/widget/ad.php:111
テーマで使っているウイジェットがphp8に対応していないらしい
事前に最新版に更新していればよかったのだが、すでに手遅れ
仕方ないのでad.php他多数を修正
create_functionをfunctionに変更
< add_action(‘widgets_init’, create_function(”, ‘return register_widget(“ml_ad_widget”);’));
—
> add_action(‘widgets_init’, function(){return register_widget(“ml_ad_widget”);});
などなど
—————————————————
もう一度新サーバのWordPressにアクセス
http://(新サーバ) /wp-admin
再度インターナルサーバエラー(500)が発生
/var/log/php-fpm/www-error.logを見てみる
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function WP_Widget::__construct(), 0 passed in /var/www/html/wp-includes/class-wp-widget-factory.php on line 62 and at least 2 expected in /var/www/html/wp-includes/class-wp-widget.php:163
調べてみるとWordPress8.2のバグらしい
html/wp-includes/class-wp-widget-factory.phpを修正
< $this->widgets[ $widget ] = new $widget();
—
> $this->widgets[ $widget ] = new $widget( $widget, $widget );
—————————————————
もう一度新サーバのWordPressにアクセス
http://(新サーバ) /wp-admin
ようやく動いた
—————————————————
5)追記
—————————————————
修正したWordPressのファイルは、自動更新されると元に戻り、同じエラーが出てしまいます。
なので、古いテーマを使うのをやめて、新しいのに変更しました。
この記事へのコメントはありません。