Sessions funktionieren nicht in der Silex\App

Aus welchem Grund auch immer, die Sessions funktionieren nicht in meinem Silex-app. Ich error_reporting in meinem php.ini E_ALL | E_STRICT und Fehler werden angezeigt und protokolliert. Nichts zu sehen gibt. Aber aus irgendeinem Grund keine session ist erstellt und es wird keine Datei in /project-root/tmp/sessions/ (und auch nicht, wenn Sie die default-session.save_path). Der Wechsel zu PdoSessionStorage, um auszuschließen, Probleme mit Lesen/schreiben-Berechtigungen auf dem filesystem, brachte keine Ergebnisse. Ich habe auch versucht, das Umschalten zwischen $app['session'], $request->getSession() und $app['request']->getSession() ohne Erfolg.

Ich bin an einem Verlust, wo sonst zu suchen für Probleme...

Hier ist eine sehr einfache test-app, die ich schrieb (use ist weggelassen, um Speicherplatz zu sparen). Im Grunde ist dieser test zeigt, was ich versuche zu erreichen, in meinem eigentlichen app. Ich will speichern, ein array in die session. In $app->before() ich überprüfen, ob der Wert gesetzt ist und dann übergeben Sie es an einen Zweig werden angezeigt, z.B. login-info: You are logged in as {{ user.name }}:

$app = new Application;
$app['debug'] = true;
$app->register(new SessionServiceProvider, array(
    'session.storage.save_path' => dirname(__DIR__) . '/tmp/sessions'
));
$app->register(new TwigServiceProvider, array(
    'twig.path' => __DIR__ . '/views'
));

$app->before(function (Request $request) use ($app) {
//   if ($app['debug'] == true) {
//       $request->getSession()->set('test', array('key' => 'value'));
//   }
    if ($request->hasPreviousSession() && $request->getSession()->has('test')) {
        $test = $request->getSession()->get('test');
        if ($test !== null) {
            $app['twig']->addGlobal('before', $test);
        }
    }
});

$app->get('/', function () use ($app) {
    return $app['twig']->render('sessiontest.twig');
});
$app->get('/test', function () use ($app) {
    $app['session']->set('test', array('key' => 'value'));
    return $app['twig']->render('sessiontest.twig',
        array('get' => $app['session']->get('test')));
});
$app->run();

sessiontest.Zweig sieht wie folgt aus:

<html>
<head><title>test</title></head>
<body>
    {% if before is defined %}before: {{ before.key }}{% endif %}
    {% if get is defined %}get: {{ get.key }}{% endif %}
</body>
</html>

Wenn Sie zu /nichts wird angezeigt, wenn der /nur zum testen "bekommen: test" angezeigt wird (aber nicht wirklich gespeichert, da weder die Rückkehr zu /noch erfrischend löst vor).

  • Bitte versuchen Sie, diese an der Spitze: $app->before(function ($request) { $request->getSession()->start(); });
  • Danke, das war der trick. Nicht zu sehen, das Holz für die Bäume, denke ich. Ich bin also verwendet, um die session gestartet wird hinter den kulissen mit Zend Framework arbeiten, dass ich didn ' T sogar denken über manuell zu starten,
  • Lass mich re-poste das als Antwort dann.
InformationsquelleAutor dbrumann | 2012-03-16
Schreibe einen Kommentar