こんにちは。
当社では WordPress を使ったホームページ制作を行っているのですが、その設定に WP-CLI を使うことがあります。
WP-CLI は WordPress を管理するためのコマンドラインインターフェースで、そのインストールやプラグインの更新など、普段管理画面から行っている作業をコマンド 1 つで実行できるツールです。
先日、WP-CLI を使いデータベースの値を置換しようとしたところ「Your server is running PHP version 5.6.40 but WordPress 6.3.1 requires at least 7.0.0」のメッセージが表示され、置換が実行できませんでした。
$ wp search-replace --dry-run --skip-columns=guid 'http://xxxxx/' 'https://xxxxx'
Your server is running PHP version 5.6.40 but WordPress 6.3.1 requires at least 7.0.0
$
WordPress のバージョンに対して サーバーのPHP バージョンが低いというような内容でした。
今回はこちらを対処するまでに行ったことをご紹介します。
現状の確認
エックスサーバーの PHP バージョンを確認する
エラーではサーバーの PHP バージョン 5.6.40 になっているとのことでしたので、そのようなことはないはずと思いましたが念のためそれを確認しました。
今回はエックスサーバーで WP-CLI を実行していたのですが問題なさそうでした。
WP-CLI の PHP バージョンを確認する
次に WP-CLI の実行するときの PHP バージョンを確認しました。
するとバージョン 5.6.40 で実行されているようでした。
$ wp --info
(略)
PHP binary: /opt/php-5.6.40-3/bin/php
PHP version: 5.6.40
(略)
$
設定ファイルでもバージョン 5.6 が指定されているようで、こちらが原因の可能性が高そうでした。
$ cat ~/.bashrc
(略)
# User specific aliases and functionsalias wp="/usr/bin/php5.6 ~/wp-cli/wp-cli.phar"
alias wp="/usr/bin/php5.6 ~/wp-cli/wp-cli.phar"
(略)
$
WP-CLIの設定変更
PHP バージョンを変更する
作業時点のエックスサーバーでは PHPバージョン8.2 まで利用できるようでしたので、いったん最新のそれを設定しました。
$ vi ~/.bashrc
(略)
# User specific aliases and functionsalias wp="/usr/bin/php5.6 ~/wp-cli/wp-cli.phar"
# alias wp="/usr/bin/php5.6 ~/wp-cli/wp-cli.phar"
alias wp="/usr/bin/php8.2 ~/wp-cli/wp-cli.phar"
(略)
$ source ~/.bashrc
$
PHP バージョンの変更を確認
設定ファイルを編集し、もう一度 WP-CLI の実行するときの PHP バージョンを確認しました。
その結果、PHP バージョンの設定は反映されたましたが、今度は WP-CLI で廃止されたプログラムが使われているといった旨のメッセージがでるようになってしまいました。
$ wp --info
PHP Deprecated: Creation of dynamic property WP_CLI\Dispatcher\CompositeCommand::$longdesc is deprecated in phar:///xxx/wp-cli/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CompositeCommand.php on line 36
(略)
PHP binary: /opt/php-8.2.9/bin/php
PHP version: 8.2.9
(略)
WP-CLI version: 2.4.0
$
このとき WP-CLI そのものバージョンが 2.4.0 でした。
PHP のバージョン 8 に対して WP-CLI のバージョンが低いのかと思い WP-CLI のホームページを確認したところ、作業時点ではバージョン 2.8.1 が最新のWP-CLIのようでした。
WP-CLI のバージョンアップ
バージョンアップする
マイナーバージョンが4以上更新されていたので、そこそこ機能の変更もされている可能性があります。
そこで、WP-CLIそのものをバージョンアップしました。
このときもメッセージが表示されましたが、バージョンアップは成功するようです。
$ wp cli update
PHP Deprecated: Creation of dynamic property WP_CLI\Dispatcher\CompositeCommand::$longdesc is deprecated in phar:///xxx/wp-cli/wp-cli.phar/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CompositeCommand.php on line 36
(略)
You have version 2.4.0. Would you like to update to 2.8.1? [y/n] y
(略)
Success: Updated WP-CLI to 2.8.1.
$
バージョンアップ確認
WP-CLI のバージョンアップまで行うと、先程のメッセージも表示されなくなりました。
$ wp --info
(略)
WP-CLI version: 2.8.1
$
データベースの置換も無事できました。
$ wp search-replace --dry-run --skip-columns=guid 'http://xxxxx/' 'https://xxxxx'
+------------------+-----------------------+--------------+------+
| Table | Column | Replacements | Type |
+------------------+-----------------------+--------------+------+
(略)
+------------------+-----------------------+--------------+------+
Success: 421 replacements to be made.
$
まとめ
今回は大きく2つの作業を行いました。
- WP-CLIの設定変更
- WP-CLIのバージョンアップ
タイトルの「Your server is running PHP version 5.6.40 but WordPress 6.3.1 requires at least 7.0.0」のメッセージだけでしたら、WP-CLIの設定変更のみで対処できそうです。
当社の場合だとWP-CLIを最初にインストールしてから時間も経っていたようで、それ自体のバージョンアップも行いました。