以前にWordPressで構築された巨大なサイトの一部修正を請け負いまして、ローカルに構築しようとしたわけですが、なんとデータベースが300MBもあり、サイト全体の容量は9GBもありました。
300MBもデータベースがあるとphpmyadminで通常の方法ではインポートできません。そこでインポートの際に工夫した点を書きます。
PHPのファイルアップロード容量を大きくする
構築するのはローカルなのでリソースはほぼ無限です。なので設定を馬鹿でかくしてやります。
php.iniの以下の項目をこのように変更
memory_limit = 512M
post_max_size = 512M
upload_max_filesize = 512M
タイムアウトを長くする
php.iniに以下の項目を記述し、セッションの有効期限を2時間に延ばします。
session.gc_maxlifetime=7200
config.inc.phpも同様に項目を追記してログインクッキーのタイムアウトを伸ばします。
$cfg[‘LoginCookieValidity’] = 7200;
これで何とかデータベースのインポートはできました。それでも細切れでアップロードしましたが…
reCAPTCHAプラグインをDBから無効化
データベースをSearch-Replace-DB-masterでローカルのアドレスに置換し、さあログインと思ったら、reCAPTCHAが「サイト所有者のエラー」を出していてとおせんぼ状態になっていました。ドメインが本番からローカルになったので当然ですね。そこでreCAPTCHAプラグインを無効化しました。
WordPressプラグインのアクティビティは「wp_options」テーブルの「active_plugins」で定義されています。マルチサイトの場合は「wp_sitemeta」の「active_sitewide_plugins」で定義。
値は以下のようになっています。構文としては次のようになっています。
「a:プラグインの数:{s:名前のbyte量:名前;…}」
a:12:{s:43:”all-in-one-seo-pack/all_in_one_seo_pack.php”;s:36:”hogehogehogehoge”;略}
reCAPTCHAの項目を削除し、a:の数字を1減らせばreCAPTCHAが無効化されます。
DBからパスワードを書き換え
ログインIDを得るにはサイトに?author=1(連番)というクエリを投げるか、データベースの「wp_users」テーブルを見れば分かりますが、ログインパスワードはそういうわけには行きません。パスワードを見る方法はありませんが、任意の文字に書き換える方法ならあります。phpmyadminで「wp_useres」テーブルで任意のユーザーの「user_pass」の値をMD5で任意の文字列を入力して書き換えます。
これでローカルで自由に弄れるクローンが出来上がりました。