WordPressって、私が設定してる時になーんかちょいちょいエラー出るんだよな…。素人の私は解決するのが大変ですよ…(。´Д⊂)
というわけで、先日から、mikanusagi.comのサブドメインでWordPressのサイトを運用しようとしているところだったのですが、、エラーでサイトにアクセスできなくなって… 立て続けに2回もエラーになって、危うくやる気を失うところでした。
- エラーが発生するまでの経緯
- All-in-One Security (AIOS) を設定中にエラー発生
- リカバリーモードからログインできた
- 致命的なエラーが新たに発生
- 解決方法・結論から言う
- 対応の詳細・不要な記述を消す
- とりあえずやってみたこと
- 再度AIOSを導入
- 最後に
- おまけ・プラグインを無効にする方法
エラーが発生するまでの経緯
先日はてなブログproでも利用しているmikanusagi.comのサブドメインをエックスサーバーにインストールしたWordPressでも使うことができるようにしました。
Xserver のドメインは複数のサーバーで使うことができるのか その1
Xserver のドメインは複数のサーバーで使うことができるのか その2
ネームサーバーをXserverレンタルサーバーにしている独自ドメインで、ホスト名がwwwのサブドメインでもはてなブログに使うことはできるのか
無事にテーマもインストールできたので、サイトを作っていこうと思って、セキュリティ関係のプラグインを入れて有効化しました。
All-in-One Security (AIOS) を設定中にエラー発生
他のドメインでも利用している「All-in-One Security (AIOS)」の設定をするために、いろいろポチポチしていました。で、ダッシュボードに表示されていた以下の表示で、「今すぐ設定」をしたら、少しして、突然サーバーにアクセスできなくなりました。
これのせいとは言い切れないけど、今回のエラーの原因である可能性は高いと思っています。(これ本当は設定した方がよいのかな…?ちなみにこの表示は、サイトをSSL化したら消えました)
ええ…残念な画面が表示された…。
そしてWordPressからメールが飛んできました。
サイトで技術的な問題が発生しています
エラー詳細
===============
エラータイプ E_ERROR が /home/mikanusagi/mikanusagi.com/public_html/xxxx.mikanusagi.com/wp-content/plugins/all-in-one-wp-security-and-firewall/classes/wp-security-abstract-ids.php ファイルの 11 行目で発生しました。
エラーメッセージ: Cannot declare class AIOS_Abstracted_Ids, because the name is already in use
エラーメッセージの意味は、Google翻訳によると、「名前がすでに使用されているため、クラスAIOS_Abstracted_Idsを宣言できません」だそうです。…どういう意味…?
よく分からないけど、このプラグインのwp-security-abstract-ids.phpファイルになんか不具合が起きたってことですね…どうすればいいの?
リカバリーモードからログインできた
とりあえず、飛んできたメールに、リカバリーモードでログインできるとあったので、そのリンクからログインしてみました。
うーん。。やっぱりプラグインの不具合。。
メールにあったのと同じエラーコメント。プラグインの正常なロードに失敗…?
この後安易な考えのもと行った私の行動がさらなるエラーを招くことに…。
致命的なエラーが新たに発生
【リカバリーモード下で行った対応】
リカバリーモードでログインできたので、このプラグインを削除して、もう一回インストールして有効化しました。
【結果】
こうなりました。
致命的なエラーが発生した…:(´◦ω◦`):
エラーの原因となったプラグインを削除して単純に再度入れたせいなのかなんなのか、こんなメッセージが出るようになってしまいました。
しかも…今回、セカンドレベルドメインが同じ (つまりサブドメイン同士) 2つのWordPressのブログを立ち上げていたのですが、なぜかもう一個のサイトまで何の影響を受けたのか、アクセス不能に…(こちらのサイトで表示されるエラー画面もなぜか上記と全く同じ。違うサブドメインなのに…。)
(はてなブログで運用しているブログは無事だったのでとりあえずそれは良かったのですが)
なんで…?
しかも今度はWordPressからメッセージが飛んでこない (さっき一回飛んできたからかもしれないけど)。これは自力でなんとかするしかないパターン。。
解決方法・結論から言う
実はこの後いろいろと試行錯誤して解決に至るのですが、まあまあ長いので(笑)、2個目のエラーの解決方法の結論を先に言います。
原因: なんらかの操作が原因で、AIOSが .user.ini に書き込みをしていた。
対応: .user.iniに追加されていたAIOSに関する記述を削除。
※ 実際は、エラーの原因となったWordPress分のAll-in-One Security (AIOS) も削除しているのですが、多分これやらなくても解決していたのではないかと思いますので、とりあえず上記。同じような状況になって、上記だけで解決しない時は、All-in-One Security (AIOS) も丸ごと削除もしくは無効化してみてください。
これでサイトにログインできるようになりました。
問題を起こしていたサイトの .user.ini. を修正しただけで、影響を受けていた別のサイトも復旧しました。
この試行錯誤の詳細、実際の画面等は以下にまとめておきます。気になる方は続きをどうぞ。
- エラーが発生するまでの経緯
- All-in-One Security (AIOS) を設定中にエラー発生
- リカバリーモードからログインできた
- 致命的なエラーが新たに発生
- 解決方法・結論から言う
- 対応の詳細・不要な記述を消す
- とりあえずやってみたこと
- 再度AIOSを導入
- 最後に
- おまけ・プラグインを無効にする方法
対応の詳細・不要な記述を消す
解決方法を探していると、この方のサイトに漂着。これ…2回目のエラーの前に試してみていたら、2回目のエラーは発生しなかったかもしれない…:(´◦ω◦`):
複製したWordPressサイトで「All-In-One Security (AIOS)」に起因するエラー表示が出た時の原因と解決方法
現在の私のエラーと全く同じ状況ではないですが、一言で言うと、異常があるファイルを削除して、再生成を試みるという対応。まあこれに尽きるよな…。
さらにネットをさまよっていると…
なんか似たようなエラーの方いたーーーー
こちらの皆さんの対応をマネしたら、なんとかなるかも…。
とりあえずやってみたこと
1. AIOSのプラグインを無効にする
後述する方法でエラーを起こしたサイトと、連動してエラーが発生したサイトのプラグインを無効にしてみましたが、これだけでは解決しませんでした。
→無効にしたものを一旦元に戻す。
プラグイン無効でダメってことは、どこかに余計なものが書き込まれているってことだよね。。それを探して削除するしかなさそう。
プラグインを無効にする方法はこちら。
2. AIOSのプラグインを削除して、関連していそうなものを削除してみる
2ではとりあえず、エラーを起こしたサイトのプラグインを削除しました。プラグイン削除だけでは全ては消えないので、piblic_htmlのフォルダ内をみて、/wp-content/uploads/aios など、AIOSとつくものを片っ端から削除していきました。
※ 大事なものまで削除してしまわないよう注意が必要です。もしやるなら、自己責任でお願いします。
しかしこれだけでは解決しませんでした。
何か見落としてるよな…絶対。。
そういえば、上記のサイトで「.user.ini」が何とかかんとかって書いてあるけど…これなんだろう?まだみてなかった。
.user.ini を確認する
.user.ini は、プログラム言語の設定ファイルということらしいのですが…
php.ini (.user.ini)とは?ワードプレスに関係のある重要な設定項目
とりあえずみてみます。
エックスサーバーの場合は、ファイルマネージャのpublic_html内にあります。
こちらを選択して、編集画面で中を見てみると…
.user.iniに aios-bootstrap.php が含まれる記載がありました。
# Begin AIOWPSEC Firewall
auto_prepend_file='/home/mikanusagi/mikanusagi.com/public_html/xxAxx.mikanusagi.com/aios-bootstrap.php'
# End AIOWPSEC Firewall
これ、同じくAIOSをインストールしている他のサイトで見てみましたが、この記載はありませんでした。
ということは、、エラーの原因はこれなんじゃ…。
(素人なので、直接の原因は明言できませんが…)
.user.ini 内にあったAIOS関連の記載を削除する
上記の緑枠内の部分 (AIOSに関する記載) を削除してみたところ、結果、無事復旧しました。
連動しておかしくなっていた別のサイトも無事復活。
再度AIOSを導入
エラーを起こしたサイトにログインしてみると、AIOSは削除された状態でしたが、このコメントが出ていました。メッセージだけ残ったのかな?プラグインファイルが削除できているのは間違いなさそう。
原因となった部分は削除できているので、もう一度このサイトにAIOSを導入して、有効化してみました。
とりあえず今のところ問題なく稼働しています。
解決してよかった。
今回削除したのはファイアーウォールに関する記述で、セキュリティ上はあった方がいいものなのかもしれません。とはいえ、絶対にAIOSのを使わないといけない、というわけではないので、他の手段でしっかりサイトを守るようにしていきたいと思います。。
最後に
今回は、AIOSで行った何かの操作が原因で、.user.ini にAIOSに関する記述が書き込まれ、それがエラーを引き起こしていたようでした。
問題が起こって大変でしたが、このプラグイン自体は大変評価が高くて、よいものだと認識しています。エラーを恐れずこれからも利用させていただきます。
また同じようなことが起こった時のための備忘録も兼ねているので、長くなってしまって申し訳ないですが、同じような状況で困っている方のお役に立てれば幸いです。
それでは今回はこのへんで。ヽ(*´∀`)
おまけ・プラグインを無効にする方法
プラグインはファイルマネージャから削除することもできますが、完全に削除すると復元できないこともあるので、自信がない時は一旦無効にして反応をみるのもありです。
以前書いていた記事から抜粋。詳細は以下のページをご参考ください。
やり方は簡単で、エックスサーバーの管理画面からファイルのプラグインにアクセスして、名前の先頭に適当な文字 (00とか) をつけるだけ。例えば「00sitemanager」みたいな。 これで一旦そのプラグインは無効化されるので、これが原因ならログインできるようになるはず。
ログインできたら、不要なプラグインなら削除しましょう。
※ なお、特定のプラグインがわからなくて、Pluginフォルダそのものの名前を一時的に変更した場合は、問題を起こしているプラグインを削除、無効化などの対応後にフォルダの名前を戻すことをお忘れなく。