WordPress: No working transports foundで更新が失敗

ハードウェアの故障でしばらくメンテナンスが行えなかったサーバーを復旧させました。
4か月ほどダウンしていたため、OSの他インストールされているWordPressの本体やプラグインが古くなってしまいました。

OSはOSのバージョンアップとパッケージの更新でまとめて行いましたが、WordPressプラグインはOSとは別に行う必要があるので、WordPress管理画面から手動で行おうとしたところ、

WordPress を更新

http://downloads.wordpress.org/release/ja/wordpress-5.1.1.zip から更新をダウンロード中…

ダウンロードに失敗しました。: No working transports found

インストール失敗

と更新に失敗。

エラーメッセージを検索してみたところ、必要な phpモジュールが消えてしまった可能性があると判明。
pkg info コマンドで確認してみると、なぜか
php56-curl

php56-ftp
が表示されません。4か月前までは動いていたわけですから、原因はまとめて更新したことによるものでしょう。OSとパッケージを FreeBSD 10.x から 11.2へ更新するときに依存関係で消されてしまったと推測します。

これら消えてしまったPHP拡張モジュールだけを再インストールすればよさそうですが、問題は、php56系はすでにports や更新サーバーから消されてしまっていること。今はphp7系になってしまっており、php56系をどうインストールするかが問題。

幸い、前のサーバーはphp56系のまま残っているため、このサーバーから pkg create コマンドでパッケージを作成し、これをターゲットサーバーにコピーして、php56-curlとphp56-ftpを復旧することにしました。

そして、apacheを再起動。

WordPress管理画面に戻って更新をかけたところ、無事にWordPress本体やプラグインを更新することができました。原因は、phpモジュールが消えてしまっていたことでした。

不思議なことに、これらのモジュールが入っていなかった間、プラグインを更新しようとすると、インストール失敗と表示されるほか、OSのログに次のようなメッセージが記録されていました。

inetd[36445]: refused connection from 162.243.145.249, service ftpd (tcp)

php-curl や php-ftp が使えない場合は、WordPressサイトのサーバーからユーザーのサーバーへ直接ftpして接続しようとするみたいです。怖いわ~。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です