WindowsにインストールしたPHPのPearが正常に動きません。
Authでログイン認証しているのですが、以下のようなエラーが出ます。
Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in C:\Program Files\xampp\php\PEAR\Auth.php on line 786
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\htdocs\login.php:7) in C:\Program Files\xampp\php\PEAR\Auth.php on line 813
Pear listで見るとAuthはインストールされています。
情報が少ないかもしれませんが、アドバイス頂けないでしょうか?どうやらセッション・クッキーが正常に動いていないようなのです。
今まではXrea上ではきちんと動いていたので、PHP・Pearの設定がおかしいんだとは思うのですが。。
どなたかよろしくお願いします。
A. PHPではheader出力の前に、他の出力(例:エラー出力)をするとheaderの定義は無効になってしまいます。
Pear Auth をインクルードする前に、何らかの文字が出力されていませんか?
A. PHPではheader出力の前に、他の出力(例:エラー出力)をするとheaderの定義は無効になってしまいます。
Pear Auth をインクルードする前に、何らかの文字が出力されていませんか?
ありがとうございます。どうやらそうだったようです。
header出力が何なのかよくわかっていないのですが、エラーも消えてAuthも正常に動作しています。
なぜXreaでは正常に動いていたのかよくわかりませんが。
ご丁寧にありがとうございました!
headers already sent
というメッセージがあるので、 session_regenerate_id()より前に
何かブラウザに出力があるとか、session_start()を呼んでしまっている
可能性が高いのかなぁと思います。
eaders already sent by (output started at C:\Program Files\xampp\htdocs\login.php:7)
こちらからはlogin.phpの7行目になにかその原因らしき部分がありそうな気配がします。
>今まではXrea上ではきちんと動いていたので
ということなのでわかり難いのですが、確か出力のバッファリングを有効
にしていると、セッション開始以前にブラウザに何か出力があっても
この警告が出ないはずです。
Xreaではoutput_buffering = Onになっていて、WindowsではOffに
なっているとかないですか?
phpinfo()で確認できるかなと思います。
回答ありがとうございます。とりあえず解決しました。
>Xreaではoutput_buffering = Onになっていて、WindowsではOffに
確かにそうなっていました!一応Onにしておきました。なるべくXreaと同じ環境にしときたいですからね。
ありがとうございます。どうやらそうだったようです。
header出力が何なのかよくわかっていないのですが、エラーも消えてAuthも正常に動作しています。
なぜXreaでは正常に動いていたのかよくわかりませんが。
ご丁寧にありがとうございました!