我对今晚遇到的事情感到十分困惑。我花了一个小时试图调试这个,但已经无处可去。我希望我只是忽略了一些简单的事情......
问题是我们得到一个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)返回字符串(3)“100”,因此我们知道$ event存在。
Weirder仍然是如果我们明确地将$ event设置为'100',那么echo调用返回“/ assets / event_uploads / 100 /”。
甚至更奇怪的是,如果我保留上面的代码(通过调用$ this-> Event_model),但在session_start之后添加一个echo(IE只是echo'a';),那么echo调用将返回正确的路径。
我不清楚为什么会这样。我从来没有遇到像PHP这样的问题,但同样,这可能是由于我的睡眠不足造成的。
答案 0 :(得分:0)
尝试致电
session_write_close()
设置所有变量后。