WordPressでwp-admin画面が真っ白になった場合にやったこと

お客様のWordpressサイトを引越しさせたときにサイト自体は正常に表示されるのですが、wp-admin画面が真っ白に表示されログインができなくなりました。wp-login.php画面は表示されるのですが、正しいIDとパスワードを入力してもログインができません。結構ハマッタのでメモしておきます。

調べて見ると以下が原因で発生するということでしたが、どちらでもありませんでした。

  • functions.phpがBOM有りで保存されているかコードの一行目が空白になっている。
  • プラグインとテーマが干渉している。

ただ、お客様が購入された有料テーマを無効にするとwp-admin画面が表示されログインできました。しかし、有料テーマであるだけにテーマ変更してくださいととも言えず継続して調べることにしました。

まずは、デバッグを有効化するためにワードプレスフォルダの直下「wp-config.php」の中のWP_DEBUGをtrueにします。

define(‘WP_DEBUG’, true);

そうすると有料テーマでワーニング「Warning:Cannot modify header information」が発生していました。

こいつを解消するために「php.ini」の「output_buffering」の設定を1(ON)に変更すると問題となっている有料テーマでも正常にログインできました。

SHIFT-JISで一部の漢字が文字化けしてCGIが動かない

SHIFT-JISで一部の漢字が文字化けしてCGIが動かない問題が発生しました。

他の人が作ったperlのCGIを使ってサイトを作成していたのですが、特定のページでInternal Server Errorが発生しました。この場合、ファイルのパーミッションがおかしいのが原因ということはよくあるのですが、一括してパーミッションを変更していたので問題はありませんでした。

サーバーのエラーログを確認すると何やら文字コードの問題のようです。問題が発生している行数とカラムが表示されていましたので原因の個所を確認しました。

[Sun Dec 31 14:52:58.320053 2017] [cgi:error] [pid 62413] [client 182.236.38.11:0] AH01215: Unrecognized character \\x92; marked by <-- HERE after ','\x90^\x90\\','<-- HERE near column 229 at maruchan.cgi line 24.:
[Sun Dec 31 14:52:58.320178 2017] [cgi:error] [pid 62413] [client 182.236.38.11:0] End of script output before headers: maruchan.cgi

文字を消しながら確認すると原因は少し前にある「申」という漢字でした。調べてみるとSHIFT-JISで以下の漢字は文字化けが起こるそうです。「申」入ってますねぇ。

「―」,「ソ」,「噂」,「欺」,「圭」,「構」,「蚕」,「十」,「申」,「貼」,「能」,「表」,「暴」,「予」,「禄」,「兔」

普通に使う漢字ばかりなので文字コードをUnicodeに変えてしまいたいところですが、他人の作ったプログラムであるため我慢して別の対応方法を探ることにします。

これらの文字コードは2バイト目が「5C」になっています。ということは「\」(バックスラッシュ、円マーク)ですね。

結局、「申\」とすることで解決しました。