【WordPress】HyperDBプラグインとW3 Total Cacheの競合を解消する

2013.07.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

WordPressのDBをレプリケーションしたい時に使うHyperDBプラグインとキャッシュ+CDNに使うW3 Total Cacheを合わせて使う場合にdb.phpというファイルが競合してしまいそのままでは使えません。Webを探しても情報がなかったのでさくっと解決方法を紹介したいと思います。

この記事を書いている時のプラグインバージョンはこの通りです。

レプリケーションやプラグインの使い方については解説しません。
また、手順はsshでコマンドラインを使う前提としていますが、SFTPでも構いません。

なぜ競合するのか

低レベルな問題なのですが、wp-content/の中のdb.phpというファイル名が競合します。

解決方法

今回はW3 Total Cacheのdb.phpのファイル名を変更し、定数が書かれているファイルにあるdb.phpを書き換えます。

1,W3 Total Cacheのdb.phpをdb-cache.phpにリネーム

W3 Total Cacheを先にインストールし、W3 Total Cacheのdb.phpdb-cache.phpにリネームしてください。その後、HyperDBをインストールするのがスムーズです。

$ cd wp-content/
$ mv db.php db-cache.php

2,W3 Total Cacheの定数を書き換える

W3 Total Cacheプラグインファイルのwp-content/plugins/w3-total-cache/inc/define.phpの63,67行目を以下のように変更します。

$ cd wp-content/plugins/w3-total-cache/inc/
$ vi define.php

63行目

//変更前:
define('W3TC_INSTALL_FILE_DB', W3TC_INSTALL_DIR . '/db.php');

//変更後:
define('W3TC_INSTALL_FILE_DB', W3TC_INSTALL_DIR . '/db-cache.php');

67行目

//変更前:
define('W3TC_ADDIN_FILE_DB', WP_CONTENT_DIR . '/db.php');

//変更後:
define('W3TC_ADDIN_FILE_DB', WP_CONTENT_DIR . '/db-cache.php');

変更できたら保存しましょう。

デメリット

結構めんどうなデメリットですが、W3 Total Cacheのアップデート毎にファイル名の変更処理が必要になります。
アップデートを行う際は注意しましょう。

最後に

すべての機能の動作確認ができているわけではないですが、これで動くようになると思います。