こんにちは。
こちらのページはWordPressで作成されたサイトのアプリケーション・サーバ保守運用をする部署の中の人が担当させていただきます。
さて、今回はWordPressに実装されている自動アップデート機能について失敗事例を紹介したいと思います。
まあ、そうだよねってものからなるほどー、というものまであるかと思いますので、ぜひ最後までご覧いただけますと幸いです。
1. wp-adminと同じ階層にバージョン管理用のフォルダがある
プログラマー的な視点の話になりますが、バージョン管理をしているにも関わらず、自動でバージョンアップをされていたら単純に困りますよね。
おそらくそういった観点から、WordPressのコア側でアップデート時にバージョン管理ツールの存在を検知して、もし存在する場合はアップデートを中止する、という仕様になっているようです。
ただ、wp-content下やwp-adminよりも上の階層であれば検知されないため、場所を選んでバージョン管理を開始すれば問題ないかと思われます。
WordPress4.9.4現在、以下のバージョン管理ツールが検知されるようです。
- Subversion(.svn)
- Git(.git)
- Mercurial(.hg)
- Bazaar(.bzr)
2. wp-content/upgradeフォルダに書き込み権限がない
自動アップデートの設定をするとき、FTP/SSHユーザー名とパスワードを入力するかと思います。
(参考:WordPress Codex 日本語版 wp-config.php の編集)
自動アップデート時、最新のWordPressがまずどこにダウンロードするかというとwp-content/upgradeフォルダで、そこに対してFTP/SSHユーザーの書き込み権限がない場合、アップデートは失敗するという仕様です。
そのため、自動アップデート設定をした際にupgradeフォルダは自動アップデートを実行するユーザーの権限で書き込みができるよう設定をしておく必要があります。
3. FTPが止まっている、ポートが塞がっている
2に付随する話ですが、セキュリティの観点などからFTPを止めている場合や、FTPのミドルウェアを止めている場合には当然ですがFTPを通じたアップデートは失敗します。
当たり前ではあるのですが、私の場合、サーバ再起動時にFTPが自動起動する設定になっておらず、あたふたしたという失敗談があります。。。
4. アップデート用のwp-cronが止まっている
WordPressでは12時間おきにアップデートがないか確かめるプログラムが定期実行されています。
そのプログラムが実行されていない場合、残念ながら自動アップデートは実行されません。
現在どのような定期実行プログラムが登録されているにはプラグインを使うか、wpコマンド(参考:WP CLI The command line interface for WordPress)を使って確かめると早いかと思います。
other. 明示的にアップデートしない設定がされている
その他、WordPress側で意図的に自動アップデートしない設定をしているが周知されていない、という可能性も踏まえ、設定例を列挙いたします。
■最新バージョンを検知するフックを削除
以下のようなフックがfunctions.phpなどに記述されているとWordPressのアップデートを検知しなくなるため、自動アップデートは実行されることはなくなります。
・remove_action(‘wp_version_check’, ‘wp_version_check’);
■定数でアップデートされないように設定されている
上記フックの他にもdefineで定数を定義することにより、自動アップデートを明示的にしない設定をすることができます。
参考リンク:WordPress Codex 日本語版 自動バックグラウンド更新の設定
いかがでしたでしょうか。
せっかく自動アップデートの設定をしても実際にアップデートされないことには効果が半減してしまいますので、この機会に見直してみてはいかがでしょうか。
ではよきWordPressライフを。
▶超高速CMS実行環境のサーバ保守サービスなら、 KUSANAGI公式サポートサービス
▶超高速CMS実行環境について、KUSANAGI公式サイト
▶表示高速化を追求したエンジン WEXAL Page Speed Technology