はじめに
昨日まで普通にログインできていたWordPressの管理画面に、突然入れなくなりました。
表示されたのは「予期しない出力により Cookie がブロックされました」というエラー。
プラグインもテーマも特にいじっていなかったので、最初は「サーバー側の問題かな?」と思っていたのですが…
結論から言うと、自分のテーマ内の functions.php に書かれた1行が原因でした。
今回は、その原因と解決までの流れをまとめておきます。
(今後同じように困る人がいたら、この記事が少しでも助けになればうれしいです!)
症状:「Cookie がブロックされました」でログイン不可
ある日いつものようにWordpressの管理画面にアクセスすると、ログイン画面で次のようなエラーメッセージが表示されました。
予期しない出力により Cookie がブロックされました。
ブラウザのCookie設定を確認してください。
Cookie設定を見直しても、シークレットモードでも、ブラウザを変えても変化なし。
「え、昨日まで普通に入れたのに…?」と焦りました😇
解決への道:debug.logで原因を特定
プラグインを全停止しても直らなかったので、
「もしかしてテーマの中で何か出力してる?」と思い、サーバー上の wp-content/debug.log を直接確認してみました。
すると、ログにこんな記述が。
- [12-Oct-2025 14:57:45 UTC] PHP Warning: Cannot modify header information – headers already sent by (output started at /home/users/0/oops.jp-shinaryu/web/sairai.jp/wp-content/themes/sairai/functions.php:47)
このログを見ると、
「functions.php の47行目で何か出力が始まってしまっていて、WordPressがログインに必要なCookie(ヘッダー情報)を送れない」という意味らしいです。
最初は正直よく分からなかったのですが、ChatGPTに「このエラーってどういう意味?」と聞いてみたところ、「functions.php の末尾にある ?> や余分な改行が原因の可能性があります」と教えてくれました。
実際にファイルを確認してみると…
しっかり末尾に ?> と改行が入っていました。笑
これを削除したら、無事ログイン成功!!🎉
原因:functions.php の末尾にあった「?>」
PHPファイルは、閉じタグ ?> の後に改行や空白があると
「出力された」と判断されてしまい、
それ以降に送られるCookieやヘッダー情報がブロックされます。
WordPressではその事故を防ぐために、?> を書かずに終わらせるのが通例なんです。
つまり今回の原因は、ほんの数文字。
でも、それだけで管理画面に入れなくなるとは…奥が深いですね😅
修正後の対応
functions.phpの末尾の?>を削除- 余計な改行・空白をなくす
- ファイルを UTF-8(BOMなし) で保存
保存後、再度ログインしてみると、何事もなかったかのようにスムーズに管理画面へ。
一瞬で解決しました。
今回の学びまとめ
- 「Cannot modify header information」や「Cookie がブロック」は出力系ミスが原因のことが多い
- debug.logを確認すれば原因のファイルと行数が分かる
- PHPファイルは閉じタグを書かない・BOMなし保存が鉄則
- ChatGPTは、エラー内容を翻訳&原因を推測してくれる
おわりに
正直、最初は「もうダメかも」と思っていましたが、冷静にログを見て、ChatGPTに相談したことで解決できました。
僕のようにエンジニアではない人でも、「現状」「困っていること」「どうなりたいか」を丁寧に伝えれば、ChatGPTは一緒に原因を探してくれます。
トラブルにぶつかったときは、諦めずに一歩ずつ。
ログとChatGPTを味方につければ、きっと解決の糸口が見つかります!
まとめ
WordPressのエラーは難しく見えても、冷静にログを読めば必ず理由があります。
ChatGPTに相談しながら進めるだけでも、確実に前に進める。
そんなことを実感した出来事でした。