PHPでSESSIONを引き継げないが原因不明…UTF-8(BOM付き)になってませんか?
この度ロリポップサーバーで公開しているWebアプリケーションで一部セッション情報を引き継げないページが発生したため、トラブルシューティングの記事となります。
事象が発生したのはとあるサービスの管理画面なのですが、以下のような状態でした。
users.php | ログイン判定不能 |
---|---|
rooms.php | ログイン判定不能 |
casts.php | ログイン判定可 |
ログイン判定ができないことからいろいろな個所を調査しましたが、ファイルの冒頭session_start後にすでにセッション情報が空であることを確認。casts.phpではセッション情報が取れているのでふたつを比較してみても疑われるような記述の誤りは見つかりませんでした。
そこでできるだけ記述をシンプルにしてみようと、session_startとセッション情報をvar_dumpするだけのファイルを作成してみたところ、これも動かず・・・
さすがにこれはおかしいとうことでファイルの文字コードを調べてみました。するとこのファイルだけなぜか文字コードが「UTF-8(BOM付き)」となっていました。
これをメモ帳で開いてUTF-8で保存しなおしてアップロードしたら無事にセッション情報を引き継ぐことができました。
PHPでセッション情報の引継ぎがうまくいかずコードに原因が見当たらないというときはファイルの文字コードを疑ってみるとよいかもしれません。
投稿者プロフィール

最新の投稿
Webサイト制作実績2022.05.20オンライン英会話「みんなの英会話」のシステム開発を担当させて頂きました。
Webサイト制作実績2022.05.12南柏あたご整骨院のサイトリニューアルを担当させて頂きました。
メタバースブログ2022.05.10未来のVR体験を大きく変える革新的技術まとめ
SEO対策・ホームページ集客2022.04.26八千代市のおすすめホームページ制作会社5選/Google評価順