3

私は今夜​​経験していることに完全に困惑しています。これをデバッグするのに1時間費やしましたが、どこにも行きませんでした。私は単純なものを見落としていることを願っています....

問題は、ID を取得して変数 ($event) に格納し、セッションを開始して $event をセッション配列にロードしていることです。何が起こっているかというと、ブラウザー ウィンドウにテキストをエコーし​​ないと、セッションで変数が設定されないということです。ANYTHING をブラウザにエコーすると、変数は正しく参照されます。$event で var_dump を実行しましたが、長さ X の文字列として正しく格納されています。X は ID の長さです。

関連するコードは次のとおりです。

$event = $this->Event_model->get_event_id_with_form_id($batch->event_id); // This call successfully returns "100"
session_start();
$_SESSION['ckfinder'] = array ();
$_SESSION['ckfinder']['enabled'] = true;
$_SESSION['ckfinder']['uploadURL'] = '/assets/event_uploads/' . $event . '/';

echo $_SESSION['ckfinder']['uploadURL']; // Returns "/assets/event_uploads//"

ただし、var_dump($event) は string(3) "100" を返すため、$event が存在することがわかります。

さらに奇妙なことに、$event を明示的に '100' に設定すると、echo 呼び出しは "/assets/event_uploads/100/" を返します。

さらに奇妙なのは、上記のコードをそのままにして ($this->Event_model の呼び出しを使用)、session_start の後にエコーを追加すると (IE は単に echo 'a';)、再度エコー呼び出しが行われることです。正しいパスを返します。

なぜこれが起こっているのかは私には明らかではありません。PHP でこのような問題を経験したことはありませんが、睡眠不足が原因である可能性があります。

4

1 に答える 1

0

電話してみる

session_write_close()

すべての変数を設定した後。

于 2013-08-08T08:29:46.470 に答える