1

したがって、次のようにセッション変数を設定する PHP 関数があります。

function createSVar($varext) { 
 [...]
 $_SESSION['v'.$varext) = time(); // hypothetical value set
 [...]
 return $output;
}

そして、それを呼び出す関数:

function someFunction1() { 
 [...]
 $output = createSVar("name1");
 [...]
 return $output;
}

function someFunction2() { 
 [...]
 $output = createSVar("name2");
 [...]
 return $output;
}

これらの関数は関数ファイルに含まれています。次に、次のように構成ファイルをセットアップします。

<?
ob_start();
session_name("mysession");
session_start();
[...]
include("functions.php");

次に、私のPHPページでは、これらは次のように使用されます:

<?
include("config.php");
[...]
echo someFunction2();
[...]
echo someFunction1();

私の問題は、このセットアップが PHP 5.2.17 を搭載した 2 つの異なるマシンで正常に動作することです。PHP 5.3.0 の 3 番目のものでは、そうではありません。何らかの理由で、関数の呼び出しごとに以前のセッション値 (以前に設定されたセッション変数) を変更しcreateSVar()ます。変更ログを確認しましたが、更新は見られませんでした。

これはバグでしょうか?

4

1 に答える 1

0

私の最初の傾向は、session_start() の後に ob_start() を呼び出すことです。Session_start() は、ob_start() 呼び出しによってバッファリングされる可能性のある HTTP ヘッダーを送信する必要があります。

于 2013-02-05T03:41:29.293 に答える