PHP/Pearの設定についてについての質問です。


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の設定がおかしいんだとは思うのですが。。

どなたかよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/04/20 10:04:41
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:inokuni No.1

回答回数1343ベストアンサー獲得回数21

ポイント50pt

A. PHPではheader出力の前に、他の出力(例:エラー出力)をするとheaderの定義は無効になってしまいます。

Pear Auth をインクルードする前に、何らかの文字が出力されていませんか?

http://q.hatena.ne.jp/1168608777

id:tokyosmash

ありがとうございます。どうやらそうだったようです。

header出力が何なのかよくわかっていないのですが、エラーも消えてAuthも正常に動作しています。

なぜXreaでは正常に動いていたのかよくわかりませんが。

ご丁寧にありがとうございました!

2007/04/14 01:35:06

その他の回答1件)

id:inokuni No.1

回答回数1343ベストアンサー獲得回数21ここでベストアンサー

ポイント50pt

A. PHPではheader出力の前に、他の出力(例:エラー出力)をするとheaderの定義は無効になってしまいます。

Pear Auth をインクルードする前に、何らかの文字が出力されていませんか?

http://q.hatena.ne.jp/1168608777

id:tokyosmash

ありがとうございます。どうやらそうだったようです。

header出力が何なのかよくわかっていないのですが、エラーも消えてAuthも正常に動作しています。

なぜXreaでは正常に動いていたのかよくわかりませんが。

ご丁寧にありがとうございました!

2007/04/14 01:35:06
id:gekikawa No.2

回答回数110ベストアンサー獲得回数11

ポイント20pt

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()で確認できるかなと思います。

id:tokyosmash

回答ありがとうございます。とりあえず解決しました。

>Xreaではoutput_buffering = Onになっていて、WindowsではOffに

確かにそうなっていました!一応Onにしておきました。なるべくXreaと同じ環境にしときたいですからね。

2007/04/14 01:36:35
  • id:tokyosmash
    PearList情報
    Archive_Tar
    Auth
    Console_Getopt
    DB
    HTML_Common
    PEAR
    Pager
    Structures_Graph

    これはインストールされています。
    他に何か必要なものがあるのでしょうか?

    それからphp.iniです。
    ; Windows: "\path1;\path2"
    include_path = ".;C:\Program Files\xampp\php\pear\"

    こんな感じです。
  • id:gekikawa
    ヘッダー情報はサーバーからブラウザへ送られるデータのうち
    一般的には表示内容に表れない部分です。


    つまり、「これから~~という表示内容のデータを送りますよ」
    という情報といった感じでしょうか?(不正確でスイマセン)

    ですから表示内容の部分(PHPのエラー表示も含まれます)が
    サーバーからブラウザに送信されてしまっていると、その後で
    ヘッダーに関する内容をPHPが送信しようとしても、基本的には
    無理なんです。(この時にお書きになったようなエラーメッセージがでます。)


    ですがPHPでバッファーリングをしていると、出力内容に関する部分を
    ブラウザにすぐ送信せず、溜めておいて後から一括送信するようです。
    この時は、スクリプトの途中でヘッダー情報に関する操作を行っても
    まだブラウザには何も送信されていないはずなので、意図した通りの
    ヘッダー情報が送られることになるのです。(と私は理解しています。)


    ということで、「Pearのインストール」については不具合はなく、
    今回のケースでは「バッファーリングをonにする」かまたは
    「Pear Authの読込み前に出力をしない」にするのが根本的な解決策です。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません