WordPressのバックアップを取るのに便利なツールを探していて、BackWPup というプラグインを見つけた。さっそくインストールしてみたところ、評判通りなかなか良いのだが、肝心要なお仕事用のサーバでエラーが発生し、犬のおまわりさんみたいにわんわんわワンと泣くはめになった。
このサーバは、大阪の某レンタルサーバを使っている。2年ほど前に大チョンボをしてしまったアソコだ。だからよけいにバックアップをとりたい。
さて、調べてみると、MYSQL_SOCKET = /tmp/mysql.sock
となっているのに、mysql.default_socket = /var/run/mysql/mysql.sock
となっていて、これらが一致していないためにデータベースへ通信エラーとなっていることがわかった。
普通ならMySQLの定義ファイル my.cnf か、PHPの定義ファイル php.ini でこれらを一致させれば良いのだが、サーバ屋さんの運営方針でここらをいじらせてくれない。いけず。
ということでパッチを当てる
BackWPupはソースで提供されているので、中をごそごそと調べてみた。
inc/class-mysqldump.php の85行目付近
このように ini_get()
で mysql.default_socket
の値を取り出し、強制的に dbsocket
にセットしている。これで幸せになれた。
直前の部分を見ると、wp-config.php の DB_HOST
を dbhost:port:socket
の書式で与えてやれば良さそうだが、これではデータベース接続エラーになってしまい、うまく行かなかった。