昔はWordPressにキャッシュ系プラグインをいくつかインストールしていましたが、現在ではほとんど使っていません。唯一使っているのはZencacheの有料版である、ZenCache Proのみ。
ちなみにQuickCache proから自動的にバージョンアップしたのでUltimeted Licenceです。
このZenCache proは新しいバージョンが公開されるとWordPressの管理画面にこのようなお知らせが表示されます。
そしてWordPressのプラグイン管理画面や更新画面からではなく、この案内のリンクからバージョンアップ作業を行うことが可能です。
2回くらいリンクをクリックすればアップデート作業は終了するので非常に楽。
不安なら毎回一度アンインストールしてから最新版を手動でインストールしてもいいですが、あまりその必要性は感じません。
目次
- 1 ZenCache pro v151002へ更新するとFatal errorになる
- 2 ZenCache proの手動アンインストール方法
- 2.1 1.Edit your 【wp-config.php】 file and remove the line at the top that says 【define(WP_CACHE, TRUE);】
- 2.2 2.Delete the 【advanced-cache.php】 file from inside 【wp-content】
- 2.3 3.Delete the 【zencache】 or 【zencache-pro】 directory from inside 【wp-content/plugins/】
- 2.4 4.Delete the 【zencache】 directory from inside 【wp-content/cache/】
- 3 旧バージョンのZenCacheProを入手してインストール
- 4 v151004でこのエラーは修正されていた
ZenCache pro v151002へ更新するとFatal errorになる
さて、先日の10/2に最新版のv151002がアップグレード可能となり案内が管理画面へと表示されました。
いくつかZenCache proをインストールしているWordPressサイトがありますが、その内のひとつで早速アップデート。
ところが更新の途中でこんなエラーが表示されました。
Fatal error: Using $this when not in object context in ~(省略)~/wp-content/plugins/zencache-pro/src/includes/closures/Plugin/WcpUtils.php on line 44
何だろう?とは思ったもののそのままアップデート作業を進行。
というより途中で止めようがないので勝手に進んでいきます。
そして終了。
一見なにごともなく終了したかのように見えました。
バージョンは151002となっています。
しかしその後、ZenCache proの設定を変更して保存ボタンを押すと管理画面が真っ白になり下記のようなエラーが表示。
Fatal error: Using $this when not in object context in~(省略)~/wp-content/plugins/zencache-pro/src/includes/closures/Plugin/WcpUtils.php on line 44
編集や変更ができません。
それだけならまだしもWordPressのプラグイン管理画面から「停止」をクリックしても同じようなFatal errorが表示されプラグインを止めることが不可能になってしまいました。
エラー内容から該当するファイルを見ればどうにかできるかなと調べてみたところ、さっぱりわからず。
結局、情報が出そろったらどうにかなるかと考え、一旦ZenCache proのバージョンを一つ前のv150821に戻すことにしました。
ただ上記したように管理画面からプラグインの「停止」や「削除」ができません。
そこでFTP or SFTP接続して手動でZenCache proを削除→一つ前のバージョンを再インストールという手順を踏むことになりました。
ZenCache proの手動アンインストール方法
WordPressのプラグインを手動でアンインストールするとなると、wp-content/plugins/の中にある該当するフォルダ(今回はZenCache pro)を削除してしまえばいいように思いますが、キャッシュ系プラグインの場合そう簡単ではありません。
というのも、この手のプラグインはそのプラグインフォルダ内だけでなく他の場所にcache用のフォルダを作成していたり、wp-config.phpファイルに命令文を書き込んでいたりするからです。
このあたりもひとつひとつ手動で削除していかなければ、先々どんな不具合が発生するかわかりません。
なおZenCacheの完全アンインストール方法については公式サイトにその手順が掲載されています。
→How do I uninstall ZenCache? | ZenCache?
通常は上記のページに書かれているとおりデータベース内のZenCacheのデータを削除→プラグインフォルダやキャッシュフォルダを削除、という流れになります。
ただ今回は管理画面からのデータベースの操作ができない状態になっていましたので、プラグインフォルダ類の削除だけ行いました。
もう一度旧バージョンのZenCache proをインストールする予定だったので、むしろデータベース内の設定などは残っているほうが望ましく結果的にこれはよかったと思います。
もしこの状況で完全に削除したいのであれば、MySQLを直接操作してZenCacheに関するデータをこちらも手動で削除すればいいでしょう。
ということで上記リンク先の「How do I manually uninstall via FTP?」の手順に従ってアンインストール作業を進めていきます。
1.Edit your 【wp-config.php】 file and remove the line at the top that says 【define(WP_CACHE, TRUE);】
まずはwp-config.phpファイルに書き込まれた「define(WP_CACHE, TRUE);」を削除します。
サーバー上のwp-config.phpファイルにアクセスし
(ここからの作業は全てWinscpを使いました)
ファイルの先頭に書き込まれている「define(WP_CACHE, TRUE);」という文字列を削除して保存。
2.Delete the 【advanced-cache.php】 file from inside 【wp-content】
続いてwp-contentフォルダ内にある「advanced-cache.php」というphpファイルを削除します。
wp-contentに接続。
advanced-cache.phpを削除。
3.Delete the 【zencache】 or 【zencache-pro】 directory from inside 【wp-content/plugins/】
wp-content/pluginsフォルダ内にある「zencache-pro」フォルダを丸ごと全部削除します。
wp-content/pluginsに接続。
zencache-proのフォルダを探し削除。
zで始まるので探すのは簡単。
フォルダ内のファイル数が多いので削除には若干時間がかかります。
4.Delete the 【zencache】 directory from inside 【wp-content/cache/】
最後の4つめ。
wp-content/cacheフォルダ内の「zencache」フォルダを削除します。
wp-content/cacheフォルダに接続。
cacheフォルダ内に「zencache」というフォルダがあるのでこれを削除。
以上でzencache-proの手動アンインストールは完了。
強引に構成ファイルだけを削除しているのでプラグイン管理画面では最初の1回だけエラーが表示されますが、これは気にしなくていいです。
旧バージョンのZenCacheProを入手してインストール
これでZenCache pro v151002はアンインストールされたので、次に一つ前のバージョンを手動でインストールします。
なお、MySQL内のZenCache proに関するデータは削除していませんので、設定等はそのまま引き継がれます。
ZenCache proの旧バージョンのファイルを入手するには、ZenCacheの公式サイトから「My Account」へログイン
My Accountページ内の「Release Archive」の項目にあるリンクをクリックすると
古いバージョンのZenCache proがダウンロードできます。
あとはダウンロードしてWordPressのプラグインフォルダ内にアップすればOK。
v151004でこのエラーは修正されていた
一つ前のv150821に戻してFatal errorは解消されたものの、プラグインを古いまま使い続けるという選択肢はありません。
どうしたものかなと思いつつも放置していると、10/4には修正されたZenCache proが配布されていました。
今度は無事アップグレード完了。
新しいバージョンからキャッシュファイルの容量が見られたり、いくつか新機能が追加されているようです。