变量仅在回声后可用

时间:2013-08-07 22:15:54

标签: php

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

问题是我们得到一个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这样的问题,但同样,这可能是由于我的睡眠不足造成的。

1 个答案:

答案 0 :(得分:0)

尝试致电

session_write_close()

设置所有变量后。