最近、WordPress の管理画面で、「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 管理画面上のエラーメッセージ問題、無事に解決しました。