WordPress移行がうまくいかない?データベース・表示エラーの対処法

2023.11.08

はじめに

WordPressのサイト移行作業中、「データベースが反映できない」「なぜかサイトが表示されない」といった問題に直面していませんか?ローカル環境では動いていたのに、本番環境だとうまくいかない…というのは、Web制作者なら一度は経験する「あるある」かもしれません。

この記事では、そんなWordPress移行時によくあるトラブルと、その解決策をチェックリスト形式でご紹介します。焦らず、一つずつ確認していきましょう。

ケース1:データベース(DB)がインポートできない

データベースのインポート時にエラーが出る場合、移行元と移行先のデータベースのバージョンが異なっている可能性があります。

エクスポートした「.sql」ファイルを開き、以下の2点を確認・修正してみてください。

  • 「utf8mb4_unicode_520_ci」を「utf8_general_ci」に変更
  • 「utf8mb4」を「utf8」に変更

(参考:MySQLエラー「Unknown collation: ‘utf8mb4_unicode_520_ci’」の対処法

ケース2:Search-Replace-DBが正しく動作しない

データベース内のURLを一括置換できる便利ツール「Search-Replace-DB」がうまく表示・動作しない場合、以下の点を確認してください。

  • 設置階層の確認:ツール(Search-Replace-DB-masterフォルダなど)が、WordPressの「wp-config.php」ファイルと同じ階層にアップロードされていますか?
  • バージョンの確認:サーバー環境(特にPHPのバージョン)とツールのバージョンが合っていない可能性があります。古いバージョンを試すか、公式リポジトリから最新版をダウンロードし直してみてください。
  • パーミッションの確認:アップロードしたフォルダやファイルのパーミッション(権限)が原因かもしれません。テスト環境であれば、一時的にフォルダのパーミッションを「777」などに変更し、「内包している項目に適用(サブディレクトリにも適用)」してみてください。
    ※注意:パーミッション「777」は誰でも書き換え可能な状態であり、セキュリティ上非常に危険です。テスト環境での一時的な対処とし、作業完了後は必ず「755」や「644」など適切な設定に戻してください。

ケース3:サイトが真っ白で表示される(真っ白な画面)

移行後にサイトが真っ白になる(White Screen of Death)場合、さまざまな原因が考えられます。まずはエラー表示を確認するのが基本ですが、以下の点を順にチェックしてみてください。

  • パーマリンク設定の更新:管理画面にログインできる場合は、「設定」>「パーマリンク設定」を開き、何も変更せずに「変更を保存」ボタンを押してみてください。これにより「.htaccess」ファイルが再生成され、表示が直ることがあります。
  • テーマの確認:「外観」>「テーマ」で、意図したテーマが正しく有効化されているか確認してください。
  • ホームページ表示設定の確認:固定ページをトップページに設定していた場合、「設定」>「表示設定」で「ホームページの表示」が正しく引き継がれているか確認しましょう。
  • プラグインの競合:プラグインが移行先の環境と合わずにエラーを起こしている可能性があります。一旦すべてのプラグインを「無効化」してみてください。もし管理画面にも入れない場合は、FTPソフトなどでサーバーに接続し、「/wp-content/plugins」フォルダの名前を一時的に変更(例:「plugins_old」)すると、強制的に全プラグインを無効化できます。

ケース4:メディア(画像)がアップロードできない

移行後、管理画面から新しい画像をアップロードできなくなった場合は、以下を確認します。

  • アップロード容量の上限:大きな画像をアップロードしようとしていませんか?サーバーには一度にアップロードできるファイルサイズの上限が設定されています。容量を増やしたい場合は、サーバーの設定(php.iniなど)を確認してください。(参考:WordPressのアップロードファイルサイズ上限を増やす方法
  • パーミッションの確認:画像を保存するフォルダ「/wp-content/uploads」のパーミッションが書き込み可(通常は「755」や「777」など。サーバー環境によります)になっているか確認してください。
  • パーマリンク設定の確認:ケース3と同様に、パーマリンク設定を一度更新してみてください。

ケース5:ローカル環境では動いたのに、サーバーでエラーが出る

ローカル(自分のPC)では問題なかったのに、本番サーバーにアップロードしたらエラーが出る場合、PHPの記述、特にヒアドキュメント(Here Document)構文が原因かもしれません。

ヒアドキュメントは、複数行の文字列を扱うための記述法ですが、構文のルールが厳格です。開始識別子(例:<<<EOT)や終了識別子(例:EOT;)の直後に、**目に見えないスペースやタブが入っている**だけでエラーになります。

// エラーになる例 (EOTの後にスペースがある)
$data =<<<EOT 
foo bar
EOT; 

// エラーになる例 (EOT;の行がインデントされている)
$data =<<<EOT
foo bar
 EOT;

エラーログを確認し、該当箇所がないかチェックしてみてください。(参考ページ:ヒアドキュメント(EOT)の落とし穴

まとめ

WordPressの移行は予期せぬエラーが発生しがちですが、多くの場合、データベース、パーミッション、プラグインのいずれかに原因があります。この記事のチェックリストを参考に、一つずつ原因を切り分けて対処すれば、きっと解決できます。スムーズなサイト移行の一助となれば幸いです。


よくある質問(FAQ)

Q1. 記事で紹介されている「Search-Replace-DB」とは何ですか?

A1. 「Search-Replace-DB」は、WordPressのデータベース内に含まれる古いURL(例:ローカル環境のURL)を、新しいURL(例:本番環境のURL)に一括で書き換えるためのサードパーティ製ツールです。WordPressの移行では、記事本文や設定値に残った古いURLを修正する必要があり、このツールがよく使われます。

Q2. パーミッションを「777」にするのはなぜですか? 危険ではないですか?

A2. パーミッション「777」は、「誰でも読み書き・実行できる」という最大限の権限を与える設定です。記事中でこの設定に言及しているのは、移行作業中に「権限がない」ことによるエラー(ファイルがアップロードできない、ツールが動作しないなど)が発生することが多いため、原因切り分けの一時的な手段として紹介しています。
ご指摘の通り、この設定はセキュリティ上非常に危険なため、本番環境での使用は絶対に避け、テスト環境であっても作業完了後は必ず「755」や「644」といった適切な権限に戻してください。

Q3. この記事の対処法をすべて試しても直りません。

A3. ご不便をおかけします。この記事で解決しない場合、サーバー固有の設定(PHPのバージョン、メモリ割り当て、セキュリティ機能(WAFなど))や、使用しているテーマ・プラグインの特殊な仕様が原因である可能性も考えられます。
まずは、サーバーの提供元(ホスティング会社)にエラーログの確認を依頼するか、WordPressのデバッグモード(wp-config.phpWP_DEBUGtrueにする)を有効にして、より詳細なエラーメッセージを確認することをおすすめします。

CONTACT

webサイト制作、デザインに関するご相談、御見積のご依頼など、弊社へのお問い合わせはこちら