【WordPress】ワードプレス引っ越しでトラブルを避ける

セキュリティの強い設定のサーバーで、引っ越し系プラグインで一発で引っ越ししようとすると、ファイル所有者がバラバラになって後々ファイルを書き換えることやプラグインアップデートなどもできなくなって詰むことがあります。

それを避けるための安全な移行方法について書いていこうと思います。

なぜ問題が出るのか

サーバーには主に以下のような「ファイルを扱う主体・状態」が存在する。

  • FTPユーザー(ファイルをアップロードしたユーザー:アカウントごとにユーザーがいる)
  • PHP実行ユーザー(WordPressなどがファイルを生成・更新するときに使うOSユーザー:www-data / apacheなど。固定)
  • サーバー機能(管理画面やエディタ等)によって作成された状態(内部的にはPHPまたはシステムの実行経路で処理される)

ファイルには所有者(owner)があり、どの主体が作成したかによって所有者が異なる。

この所有者が異なると、サーバーの設定によってはFTPや管理画面からファイルを編集できなくなることがある。

特にWordPressの移行プラグイン(All-in-One Migrationなど)を使って一括移行した場合、PHPがZIP展開やファイル生成を行うため、その時に作成されたファイルがPHP実行ユーザーの所有になることがある。

その結果、FTPユーザーと所有者が一致せず、ファイルの編集・更新ができなくなる状態(いわゆるownership mismatch)が発生する場合がある。

修正できないケース

修正できないケースは以下のような条件が重なった場合である。

  • ファイルの所有状態がPHP実行側になっている
  • FTP経由の書き込み権限が付与されていない
  • サーバー側で所有状態の不一致を制限・固定する設定になっている

この場合は環境によっては、

  • FTPでも変更不可
  • サーバーエディタでも変更不可
  • プラグインによる更新も失敗

といった状態になり、いわゆる“詰み”に近い状態になることがある。

この状態は権限の変更や所有状態の調整が必要になる場合があり、サーバー設定によっては利用者側では修正できず、サーバー会社側の対応が必要になることもある。

解決法

このトラブルを回避するため、サイト構築・引っ越し時の対処を考えてみる

方法

  • 引っ越し系プラグインを使わない…安全策ではあるけど、DB移行においてアドレス置き換えが厳しい。
  • DBだけを引っ越し系プラグインで移行する

ちなみに上の記事の場合、コアファイル群(wp-admin, wp-content, wp-includesの層にある他のファイル群)までアップロードしてますが、しない方がいいです。上の場合は自分が他のいろんな設定いじってたんで全部移行しようとしてるだけだと思う。
基本的にはwp-contentの中だけアップロードし直してください。ちなみにプラグイン関係は、めちゃくちゃ厳しいとこだとFTPユーザーとPHPユーザーのオーナーミスマッチ起こってアップデートとかできなくなるので、もう最初から管理画面でプラグイン入れ直した方が安全です。

(おそらく)安全策の具体例

DB

DBのみ引っ越し系プラグインで移行。ドメイン置換が難しいため

データベースのみを選択するオプション使えます。

wpvivid Backupはデータベースのみを移行できるオプションがあります。これでダウンロードしたzipフォルダをそのまま移行先のwpvivid backupにアップロードすると移行できます。

All-in-one wp migrationもですが移行するとログインやユーザー情報などが移行前のものになるので注意です。

FTPでアップロードするもの

wp-contentフォルダの中

① テーマフォルダ

wp-content/themes/

→ ローカルで使ってるテーマフォルダ全部

② 画像・メディア

wp-content/uploads/

→ 記事の画像・動画・サムネ全部

③ その他の資産(基本的にはいらない。もし何か特殊な設定をしている場合のみ)

wp-content/languages/

→ 日本語化・翻訳ファイル使ってる場合

wp-content/mu-plugins/

→ 使ってる場合だけ(かなり特殊)

FTPで基本いらないもの

一応、いらない根拠

  • ❌ plugins→ 今回の条件では「管理画面で入れる」前提なので不要
  • ❌ cache系→ 環境依存・再生成されるだけ
wp-content/cache/
wp-content/upgrade/
wp-content/backups/

プラグイン

管理画面で入れ直す。設定とかめんどいですが、手動で入れ直した方がプラグインアップデートなどでのトラブル減ります。

他の要因

ちなみに、そもそもPHPで書き換えができない、みたいながっちがちのサーバー設定もあるみたいなので、手動でプラグインを入れたからって必ずしもアップデートとか更新ができるってわけじゃないみたいです

セキュリティ強めの環境(共用サーバーの一部や企業サーバー)では:

  • PHPのファイル書き込みが制限
    • ダウンロードはできる
    • 展開・上書きが禁止
  • FS_METHOD強制
    • FTP接続必須
    • でもFTPが書き込み禁止にされていることもある
  • ディレクトリ権限の固定
    • wp-contentが読み取り専用扱い
    • 管理画面更新が全部失敗

❸はもう論外として、❶や❷とかも、その環境はもうワードプレス使用不可環境なのでは…?って思うけど、ワードプレス使えます、みたいに言う人もいます(!!???)

まとめ

  • DB → ページや投稿の“中身”
  • uploads(FTP)→ 画像の“実体”
  • テーマ → 見た目の“設計”
  • プラグイン → 機能の“追加パーツ”

この4つは別物なので、揃えれば普通に復元できます。

あとは「全部一発でやろうとしないで、役割ごとに分けて戻す」だけで事故率はかなり下がります。