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でセッション情報の引継ぎがうまくいかずコードに原因が見当たらないというときはファイルの文字コードを疑ってみるとよいかもしれません。
投稿者プロフィール
最新の投稿
コンテンツ2023.05.30タドワークス制作のプロフィールアイコンを弟者さん(ゲーム配信者)の動画で使ってくれてる!?
コンテンツ2023.05.26なぜSCSSを使わないのか
コンテンツ2023.05.23【JQuery】appendで追加した要素でclickイベントが発火しないときの対処法
コンテンツ2023.05.19ホームページ制作会社に作業を依頼するときの注意点