F.Ko-Jiの「一秒後は未来」

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など