WordPressのアップグレードで「ファイルをコピーできませんでした」と出たので色々やってみた
色々といっても2通りだが。
しばらく放置してたWordPressを更新することに。更新前バージョンは3.1.2で更新後は3.3.1。サーバー環境はとあるVPS。VPSなのでシェルが使える前提で書いている。
バックアップ
まずはバックアップということで、ディレクトリのコピーとmysqldumpを。
$ cp -a wordpress wordpress.20120104
$ mysqldump --opt -u root -p データベース名 > dump.sql
自動更新するもエラー
自動更新をしようとするとFTPの接続情報などを入れる画面が出てきたが、FTPとか使ってない。調べると wp-config.php で FS_METHOD を direct と定義すればFTPは不要になるらしい。
define('FS_METHOD', 'direct');
これで自動更新を再度実行。すると今度はファイルの展開のところで「ファイルをコピーできませんでした。」というエラーが。解決策は提示されていないのでググってみた。
解決策1. 一時的にファイル所有者を apache にする
ひとつの解決策として WordPress をインストールしたディレクトリとそのディレクトリ以下のファイルの所有者を apache にするという方法がある。
$ chown -R apache:apache ディレクトリ名
としたあとWordPressの管理画面から自動更新をおこなって、更新できたら所有者を元に戻す。
ただし「wp-content/uploads」「wp-content/themes」「wp-content/plugins」はファイルアップロードや自動インストールができるように所有者を apache のままにしておく。
$ chown -R 元のユーザー名:元のユーザー名 ディレクトリ名 $ chown -R apache:apache ディレクトリ名/wp-content/uploads $ chown -R apache:apache ディレクトリ名/wp-content/themes $ chown -R apache:apache ディレクトリ名/wp-content/plugins
簡単に更新できたけれども、更新の間ファイル全体の所有者が apache ユーザーになるのは嫌な気も。
解決策2. 手動コピー
サーバーで wordpress-3.3.1-ja.zip をダウンロードして unzip で展開。
index.php と xmlrpc.php 以外はすべてファイル名またはディレクトリ名が「wp-」で始まっているので、index.php と xmlrpc.php だけ単体でコピーして、あとは wp-* でコピーした。
バックアップさえきちんとできていれば失敗しても問題ないかなと。
【参考】
» WordPressでFTP接続情報を求められたときのメモ – Rubellum fly light
» さくらのVPSでWordPressを動かすメモ2:FTPやディレクトリの権限について – Shinichi Nishikawa's blog
コメントを残す