3

我对今晚的经历完全感到困惑。我花了一个小时试图调试它,但无处可去。我希望我只是忽略了一些简单的事情......

问题是我们得到一个 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 只是回显'a';),那么回显调用将再次返回正确的路径。

我不清楚为什么会这样。我从来没有遇到过这样的 PHP 问题,不过,这可能是我睡眠不足造成的。

4

1 回答 1

0

试着打电话

session_write_close()

设置所有变量后。

于 2013-08-08T08:29:46.470 回答