WordPress: PHPのXML拡張が利用できません。

最近、WordPress の管理画面で、「Notice: PHP の XML 拡張が利用できません。有効化にはホスティングサービスにご連絡ください。」in …../wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php on line 348 と出る箇所があります。

Notice: PHP の XML 拡張が利用できません。有効化にはホスティングサービスにご連絡ください。」in ...../wp-content/plugins/jetpack/modules/shortcodes/class.filter-embedded-html-objects.php on line 348

これは、サーバーOS FreeBSD 12.3 の PHPをバージョンアップした時に発生し始めたのか、WordPress とプラグインを更新した時に発生し始めたのだと思いますが、よく覚えていません。というのはブログ記事の表示には特に影響ないだめです。管理画面で統計情報にアクセスするとき、目的の情報表示部分ではなくて、プレミアムユーザー向けの表示部分がエラーとなるだけで、気にしていませんでしたが、このまま放置しておくのも問題なので、そろそろ、解決しようかと、問題切り分けを開始しました。

当然考えるのが、php-xml パッケージが抜けていること。
私のサーバーにはPHP 8.0 が入っています。特に目的があって、8.0を入れているわけじゃなくて、WordPress + Apacheの更新時に道連れで更新されてしまったバージョン。私自身はPHPプログラミングはしないので、PHPのバージョンは何でもいい。

pkg info コマンドでリストを取ってみると、次のようにちゃんと入っています。

# pkg info|grep php|grep xml
php80-simplexml-8.0.25 The simplexml shared extension for php
php80-xml-8.0.25 The xml shared extension for php

そこで、pkg search コマンドで、php xml モジュールをリストアップしてみたところ、php80-xml 以外にもXML関係のパッケージが複数あることがわかりました。

php80-simplexml-8.0.25 The simplexml shared extension for php
php80-xml-8.0.25 The xml shared extension for php
php80-xmlreader-8.0.25 The xmlreader shared extension for php
php80-xmlwriter-8.0.25 The xmlwriter shared extension for php

上の二つはすでに入っているので、赤行を一つずつ php80-xmlreader と php80-xmlwriter をインストールして試すことにしました。エラーの出方から考えると、リーダーの方でしょうね。

ということで、次のコマンドを発行したところ、依存関係で、php80-dom と php80-xmlreader が出てきたので、一緒にインストール。(php-dom、昔は入っていたと思ったんだけど。)

# pkg install php80-xmlreader
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 2 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
php80-dom: 8.0.25
php80-xmlreader: 8.0.25

この後、Apacheを再起動して、エラーが出るかどうかを観察したところ、問題解決していました。

このまま解決と判断してもいいのですが、どちらが原因だったのか特定しておきたい。エラーメッセージからすると php80-xmlreader なので、php80-xmlreader を削除して、Apacheを再起動。

ところが、エラーは出ない。

残る php80-dom を削除したところ、上記の「PHP の XML 拡張が利用できません。」エラーが復活。
PHP-DOM がインストールされていなかったことが原因だったと判明。php-xmlreaderではありませんでした。php-dom を通して、 php-xml にアクセスしているのかも。

以上で、WordPress 管理画面上のエラーメッセージ問題、無事に解決しました。

コメントを残す