サイトがマルウェア感染した時や何らかのトラブルが発生した時によくある現象として、WordPressにログインしてダッシュボードを表示すると画面が真っ白で青文字のリンク文字しか表示されない時があります。
毎回、その画面を見ると暗い気持ちになります。
この現象は、wordpressが壊れているために発生する場合もありますが、マルウェア感染によりwp-admin以下のphpが実行できない場合によく起こる現象です。
それに気が付けば対処方法は簡単なのですが、ダッシュボードが表示されないとマルウェアスキャンが実行できないこともあり、そこまでたどり着かないこともあります。
ダッシュボードのスタイルが読み込まれない時に一時的にこの現象を回避できる方法があったのでメモしておきたいと思います。
ダッシュボードのスタイルが読み込まれないとどうなるか
いつもと違う見た目になります。青文字のリンクと白背景になってしまいます。
なぜダッシュボードのスタイルが読み込まれないのか?
大きく原因が2つあります。
- load-style.phpが動いていない
- siteurlとhomeurlの間違い
load-style.phpが読み込まれない
ダッシュボードのスタイルはload-style.phpで読み込みますが、load-style.phpにアクセス出来ないと403になってスタイルが読み込まれません。
siteurlとhomeurlが間違っている
siteurlとhomeurlの設定が間違っているとスタイルが読み込まれないことがあります。
例えば、httpとhttpsの違いや、単純にsiteurlとhomeurlが間違っているなどです。
一時的な対策:siteurlとhomeurlを設定する
設定が間違っている可能性があるので、wp-config.phpで設定します。
define('WP_SITEURL','https://some.domain');
define('WP_HOME','https://some.domain');
一時的な対策:wp-config.phpに1行追加する
wp-config.phpに以下の記述を追加します。require_once();の実行前に追記します。
define('CONCATENATE_SCRIPTS', false);
これを追加するとあら不思議、ダッシュボードがいつも通りに表示されます。
CONCATENATE_SCRIPTSがtrueのデフォルト状態だと、ダッシュボードでファイル読み込み時にファイルを連結して読み込む処理がされます。
その時に一つでもファイルが読めないと全滅してしまうので、CONCATENATE_SCRIPTSをfalseにすることで読み込めるファイルは読み込むので、問題が小さくなります。
なぜload-style.phpにアクセス出来ないのか?
よくあるマルウェア感染の事例として、wp-adminやwp-includesの直下に.htaccessが置かれ、.htaccessファイルの中にはphpファイルへのアクセス禁止があります。
そうなると、wp-admin以下のphpファイルが読み込めない(403になる)ため、ダッシュボードが動かなくなります。
WordPressの標準インストールでは、wp-adminやwp-includesには.htaccessは無いはずなので、あったらその時点で怪しいです。