WordPressの案件で、テスト環境を作成しようとしたときだった。
テスト環境に全ファイルをダウンロードして、wp-config.phpのDB情報を書き換えてファイル系はとりあえずこれでOK。
次に本環境のDBをとってきて、phpMyAdminでDBにインポート。ここまでもOK。
あとはコンソール(WP-CLI)からsearch-replaceでドメインをテスト環境のものへ置換をすれば完了。のはずが、エラーが出まくってできない。
どうやらテーマファイルの中でなんか変な奴がいるらしい。まあよい、よくあること。そういうときのために置換用の環境も用意していあるのだ。下手なエラーが出ないように、wp-contentフォルダも削除してあったり、コアしかない状態にしてある環境だ。そちらに移してsearch-replaceをしてみる。だがやはりエラーだ。今度のエラーは
The site you have requested is not installed. Your table prefix is 'wp_'.
こんなやつで、どういうことかというと、
DBのテーブルに使われているprefixつまり接頭辞が"wp_"じゃないですよ
と言われているのだ。
そりゃあ、DBで見た通り、クライアントの環境ではおそらく「簡単インストール」みたいなの使って、ユニークな接頭辞でインストールされたんだろ。wp3824qとなってるわ。それはそれでいいんだけど、search-replaceコマンドに--all-tables(全テーブルから検索・置換というオプション)もつけてやってんだからさ、シカトして書き換えてくれよ、と文句言いながら、何度か同じことを繰り返すが、エラーのまま。
そこでやっと勘が働いて、「置換用環境のwp-config.phpに設定してあるprefixが”wp_”のままだったか!」と確認するとその通り。DBにあるprefixと同じくして再度挑戦すると、成功。
↓我が置換用環境のwp-config.php
$table_prefix = 'wp_';↓DBにあるテーブル名と同じくする
$table_prefix = 'wp3824q';
置換用環境なんで終わったら戻しておくのも忘れないようにしないと、またコケルね。すげえ個人的なことすぎ。
テスト環境作るのは「ただ移せばいいでしょ」的に思われてか、見積もりに入れると「うええ!?お金かかるんですか?」みたいなこと言われる時があるけど、こんな感じで些細なことで躓きながら作るんで、お金もらわないとならない部分なんです。