私は今夜経験していることに完全に困惑しています。これをデバッグするのに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 でこのような問題を経験したことはありませんが、睡眠不足が原因である可能性があります。