我对今晚的经历完全感到困惑。我花了一个小时试图调试它,但无处可去。我希望我只是忽略了一些简单的事情......
问题是我们得到一个 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 问题,不过,这可能是我睡眠不足造成的。