Warning: Cannot modify header information・・・WPのログイン画面が真っ白に!?解決法【Xサーバからロリポへサーバ移行】

先日サーバ移行をしたときに、WPのログイン画面が真っ白になってログイン出来なくなってしまいました。

そのときの解決した方法についてご紹介します。

エラーを表示

一先ず、PHPでエラーを表示させてエラー内容を確認しました。そのエラーが下に添付したものです。

引用:Wordpressログイン画面のエラー
引用:Wordpressログイン画面のエラー

エラーは下記のような文言でした。
Warning: Cannot modify header information – headers already sent by

↓Google翻訳で翻訳すると下記のような感じです。
警告:ヘッダー情報を変更することはできません-ヘッダーはすでに送信されています

PHPのheader関数とは?

エラーの原因はPHPのheaderという関数にあるのですが、まずは簡単にheader関数の説明をします。この関数は指定したページに自動遷移(リダイレクト)してくれます。

例えば、このページに下記の処理を入れたとします。すると、「https://lucklog.info/error-server-migration」にアクセスしたとしても当ページには表示されず、「https://lucklog.info/」のページが表示されます。

<?php
header('Location: https://lucklog.info/');
exit;
?>

header関数がエラーになる原因は何?

実は下記のようにheader関数より前で何かを出力することは許されていません。よって、下記処理を入れるとエラーになってしまいます。

<?php
echo "header関数より前に出力があるとエラーになります";
header('Location: https://lucklog.info/');
exit;
?>

header関数の前に「header関数より前に出力があるとエラーになります」が出力されているのが問題です。このように分かりやすく出力していれば、エラーの改修は簡単です。

ですが、空行やスペースも出力と見なされてしまいます。これが今回の要因でかつ厄介な部分です。

解決:今回エラーになっていたcmn.phpを修正

今回エラーになっていたcmn.phpです。

引用:Atom

77行目、78行目に空行がありました。この2行を消すことでエラーを改善できました。

原因(推測)

元のサーバと移転先のサーバで文字の扱いが変わって、移行後でのみエラーが表示されるようになったのかもしれません。

もしくは、エラーというより警告なので、警告の場合は無視するようなPHPの設定だったのかもしれません。

詳しくはわかりませんが、無事解決できて良かったです。

まとめ

同じようなエラーが出た場合は、エラーが出ているページの<?php ?>の外にある空行や空スペースを消してみましょう。

もしかすると、解決できるかもしれません。

ついでに、header関数にはこのような特徴があってエラーになる場合があると、覚えておくと良いかもしれないですね。