複製したWordPressサイトで「All-In-One Security (AIOS)」に起因するエラー表示が出た時の原因と解決方法

「All-In-One Security (AIOS)」はとても堅牢なセキュリティプラグインで利用されている方も多いのではないでしょうか?

WordPress.org 日本語
All-In-One Security (AIOS) – Security and Firewall All-In-One Security (AIOS) は、WordPress 用に特別に設計された包括的で使いやすいセキュリティ プラグインで、Web サイトを保護します。

ある日、AIOSでセキュリティ保護をしていたサイトの管理画面にアクセスしたところ、突然Fatal errorが表示されてしまい、それ以降公開されている全ページが見れなくなってしまう…という状況に陥ってしまい途方に暮れることになりました。
復旧までにやったことについてまとめます。

目次

エラーが出る条件

今回のエラーが出たサイトは元々ルートディレクトリにインストールされていたサイトを、「All-in-One WP Migration」を利用してサブディレクトリに複製して運用していたサイトでした。

エラーが出たサイト
  • WordPress 6.5.5
  • All-in-One WP Migrationを利用してルートディレクトリにインストールしていたWordPressをサブディレクトリに複製して利用
  • All In One WP Security 5.3.1

管理画面にアクセスしたところ、下記のエラーが表示され、以降公開されている全ページも閲覧できなくなってしまいました。

Fatal error : Cannot declare class AlOS_Abstracted_Ids, because the name is already in use in /home/xxxx/xxxx/content/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-abstract-ids.php on line 11

複製元のサイト
  • WordPress 6.5.5
  • All-in-One WP Migration 7.84
  • All In One WP Security 5.3.1

複製元のサイトにはエラーは出ませんでした。

少し調べてみたところ、下記の記事が出てきたので参考元も更に見てみることに。

簡単にまとめると、下記の条件が揃うことで今回のエラーが出ていたようです。

複製元と複製先サイトとでディレクトリ構造が異なる

今回エラーが出てしまった状況のように、ルートディレクトリ→サブディレクトリ、あるいは逆にサブディレクトリ→ルートディレクトリというように、ディレクトリ構造の深さが異なる場合、エラーが出ることがあるようです。
例えば、エックスサーバーだとサブドメインにサイトを作った場合、実質的なファイルの置き場所はサブディレクトリに入るので、このような場合でも同様の現象が起きることがあります。

「All In One WP Security」が有効化されているサイトを「All-in-One WP Migration」で複製した

ざっくりと言ってしまいましたが、厳密には「All In One WP Security」の一部機能がオンになっているとエラーが出てしまうようなので、この2つの条件ががっつり揃っていてもエラーが出ないこともあります。

解決方法

今回のエラーが出ていた原因は、異なるディレクトリに複製することによって、一部のファイルのファイルパスが複製元のディレクトリの情報のまま書き換えられずに展開されてしまい、「All In One WP Security」が動くために必要なファイルをうまく参照できないため起きているようでした。
ということで、異常があるファイルを削除し、再生成を試みたところうまくいきました。

STEP
一旦FTP経由でエラーが出ているサイトの「All In One WP Security」に関するファイルを全部削除する

とにかくサイト上にエラー表示が出たままだとなにもできないので、取り急ぎ、「/wp-content/plugins/all-in-one-wp-security-and-firewall」のフォルダごと削除します。

STEP
複製先サイト内の不要なファイルを削除する

下記のファイル・フォルダを削除します

  • /aios-bootstrap.php
  • /wp-content/mu-plugins/aios-firewall-loader.php
  • /wp-content/uploads/aios

削除して大丈夫そうな場合、下記のファイルも削除します。削除できない場合は、AIOSが追記した箇所のみ削除して上書きアップロードします。

  • /.htaccess
STEP
管理画面から「All In One WP Security」を再インストール・再設定

FTP経由で削除するまでのデータはデータベース上に保存されているので、インストールさえすれば即削除前の状態にはなってはいますが、必要なファイルの生成がされていないので、特に変更がなくても「保存」ボタンを押します。

STEP
ログアウトしてみて再度ログインできるか確認する

不要なファイルの削除と必要なファイルの再生成ができていればエラーなく表示されます。
もし再度エラーが出てしまった場合はもう一度上記のステップをやり直してみた上で、他にAIOSが生成したファイルがないか、なんらかのパスの書き込みをしていそうなファイルがないか(.user.iniなど)確認してみてください


最近遭遇したエラーのなかでもなかなかの曲者だったのですが、条件がわかると気をつけるポイントが見えやすいので復旧しやすいかと思います。

この記事が同様の症状でお困りの方のお役に立てれば幸いです。

  • URLをコピーしました!
  • URLをコピーしました!
目次