0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【緊急事態】PHPのセッション変数が引き継げない!!

Posted at

開発環境で動いていたプログラムが、
本番環境にいったら動かない!!
ということはよくある。

多いのは、どこまでをエラーとして出力するかの定義の差の場合が多い。

昔からの資産があると、どうしてもワーニングが出てしまう事がある。本当はワーニングを出ないようにすべきなのだが。。。

そのような場合、多くは
.htaccessに
php_value error_reporting 30711
と書けば問題は解決してくれる。

しかし、今回は違った、ログインの情報をセッション変数に入れているのだが、リダイレクトするとその情報が引き継げないという現象が起きた。

ネットで調べると、多くはsession_start();の前に、
何かを出力してしまった事が原因という単純なもの。

ようやっと、リダイレクトでうまくいかないとの報告は見つけたが、その解決策は無し。

本番環境の構築の期限は迫っている。

しょうがないので、セキュリティー的にはNGなんだろうが、画面遷移をするためのformを用意して、それを使う事でとりあえず納品とした。

同じプログラムをデモとして別のサーバにもアップした。サーバはmix-host。
ログインなどは問題なく出来ているが、
error.log
なるものが出力されていることに気がついた。

その内容は、

session_start(): Cannot start session when headers already sent in

session_start()が失敗する?

コードは

<?php
session_start();
:

とその前には何もない。

しかし、エラーメッセージから調べると、
ファイルにBOMが付いているとsession_start();が失敗するとのページを見つけた。

セッション変数を引き継げないページのsession idを調べると何も設定されていなかったのを思い出す。

恐る恐るBOMを確認する、付いていた!!

BOMを外してみた。

formが無くても動く!!

シンプルにsession_start();が失敗していたのか。

mix-host を使わないとわからなかった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?