WordPressログイン画面で「エラー:予期しない出力によりCookiesが〜」が出た場合の対処法
WordPressで、テストサーバーやローカル環境ではうまく動いていたはずのプログラムが、本サーバーにアプした際に作動しなくなるといった事例が発生しました。
データベースも無事に引っ越し完了し、本サーバーへテーマのアップも終わった後、管理画面に再度入ろうとすると、なぜかうまくいかない・・・
その際、私が行った対処方法をここでお伝えします。同じ症状でお困りの方は一度試してみると解決するかも!?
症状
①「http://www.ドメイン名/wp-admin/」でログイン画面を出すとエラーが出る
ログイン画面に入る際、「http://www.ドメイン名/wp-admin/」で表示しようとすると、下記のエラーが出ます。
「Warning: Cannot modify header information – headers already sent by (output started at /サーバー上のアドレス/wp-includes/pluggable.php on line 1167」
しかもこのエラーしか表示されず、後の画面は真っ白な状態です。
この場合、「/wp-admin/」を「/wp-login.php」に置き換えることで対処できます。
※下手に「pluggable.php」を弄らないようにしましょう。
②ログイン画面で「エラー: 予期しない出力によりCookiesがブロックされました~」と表示される。
次に、前述の「/wp-login.php」で、管理画面に再ログインしようとすると、下記の画面が表示されます。しかもユーザー名とパスワードを間違いなく入力してもログインできない・・・
付随して、画面上部にこんなエラー表示までされました。
「Warning: Cannot modify header information – headers already sent by (output started at /サーバー上のアドレス/wp-content/themes/テーマ名/functions.php:22) in /サーバー上のアドレス/wp-login.phpon line 390」
「Warning: Cannot modify header information – headers already sent by (output started at /サーバー上のアドレス/wp-content/themes/テーマ名/functions.php:22) in /サーバー上のアドレス/wp-login.phpon line 403」
③wwwあり(なし)の正規化が無効になっている
初期設定で、私の場合「wwwあり」で設定しました。試しに「wwwなし」でURL入力すると、本来ならWordPressは自動的に正規化がなされて「wwwあり」にリダイレクトされるのですが、今回の症状ではエラー表示となり、うまく表示されません。
ちなみに、「wwwあり」のURLを入力した場合は、正常にサイトが表示されます。
対処
「functions.phpから余分な改行を排除する」
原因はこれでした。
症状②で、「Warning:〜テーマ名/functions.php:22〜」とあったので、functions.phpの22行目をチェックしてみました。
すると、21行目に改行が入っている。。。
これなのかなあ、、、と、試しに改行を削除すると。。。
無事に解決しました!
症状①で、「http://www.ドメイン名/wp-admin/」のURLで、ログイン画面が表示されるようになりました。
症状②のログイン画面でのエラーも消えました。
症状③も、リダイレクトが効くようになりました。
まとめ
今回の例の場合、そもそも「<?php 〜 ?>」を複数回使ってしまっている点で、プログラム的にはあまりよろしくない気もしますが^^;
ローカルやテストサーバーでは改行ありでも正常に動いていたものが、別サーバーに移動した場合に正常に作動しなくなる場合があります。
原因は他にも、サーバーの設定だったり、プラグインの影響だったりする場合もあるようですが、まずは今回の対処法を試してみてはいかがでしょうか。
以上、自分も困ったネタのレポートでした。
公開日:2016年7月19日
最終更新日:2016年8月17日