最近、WordPress の本体やらプラグインの更新に四苦八苦するようになってきました。
前回は、JetPackの更新。
今回は、WordPress 6.1.1 への更新出来ないトラブル発生して、更新が停止。
「WordPress を更新
https://downloads.wordpress.org/release/ja/wordpress-6.1.1.zip から更新をダウンロード中…
署名が見つからなかったため、wordpress-6.1.1.zip の信頼性を確認できませんでした。
更新を展開しています…
展開したファイルを検証しています…
いくつかのファイルをコピーできないため、最新版のインストールができません。これはたいていの場合、ファイルのパーミッションが適切でないことが原因です。: wp-includes/version.php
インストールに失敗しました。」
前回は力ずくで修正しましたが、今回も困りました。メッセージからするとWordPress を構成するディレクトリ構造のオーナーとパーミッションの問題なのですが、その問題がある場所がどのディレクトリなのかファイルなのかがわからない。メッセージに表示されている version.php はただの phpファイルで、他のファイルと同じパーミッション。
不思議なことに、同じバージョンのWordPressでも、インストールディレクトリによって更新成功したものと失敗したものが発生中。ちなみに「署名が見つからなかったため、wordpress-6.1.1.zip の信頼性を確認できませんでした。」のメッセージは、今回のトラブルとは関係なし。なんで??
エラーメッセージをWeb検索してみると、wp-admin 以下のファイルパーミッションの問題という結論にたどり着いているものが多い。一時的に、wp-admin 以下を 666 or 777 にしてみるものの結果は同じで、更新失敗。
ということは、、、、ファイルのオーナー側っぽい。
大きな原因は、Webサーバープロセス httpd と WordPress インストールディレクトリのオーナーとパーミッションの問題だとはわかっていて、根本的にはWebサーバー自体を再構成する必要がありそうです。
根本原因は、サーバーが、WordPressを導入する前から運用されているApacheだということ。CGIを動かすために、いろいろディレクトリやらファイルやらカスタマイズしています。過去、Apache + CGI で使う場合、当然でした。それが、昨今のセキュリティー強化で、Apache 側がいろいろパーミッションのルールを新しくしてきているところにWordPress側にもセキュリティー強化されたので、WordPress ルールに沿った形でCGIも書き換えないといけないんだろうな~って思うのですが、恐らくそれが原因ぽい。その修正を今やれと言われてもできないですよ。
やむを得ず、wp-admin 以下ファイルオーナーを httpd 側に合わせました。そうしたところ、ワーニングメッセージは出るものの、WordPress 6.1.1 への更新は成功。
その他の手として、wordpressの更新ファイル.zip を丸々ダウンロードして、ローカルに展開して、問題があるディレクトリに強制上書きしてしまうという方法が残っていることは知っています。これをやれば絶対うまくゆく。なぜなら、WordPressのインストール方法だから。しかし、展開ディレクトリを間違えるとえらいことになるからあまりやりたくない手段です。
今後のWordPress や wp-Plugin の更新でエラーが出た場合どうしようか?と不安が残ります。