이유가 무엇이든 Silex-app에서 세션이 작동하지 않습니다. 내 php.ini에서 error_reporting을 E_ALL | E_STRICT
으로 설정하고 오류가 표시되고 기록됩니다. 아무것도 볼 수 없어요. 하지만 어떤 이유로 세션이 생성되지 않고 /project-root/tmp/sessions/
에 파일이 없습니다 (기본 session.save_path를 사용할 때도 마찬가지입니다). 파일 시스템에 대한 읽기/쓰기 권한 문제를 배제하기 위해 PdoSessionStorage로 전환해도 결과가 없습니다. 또한 $app['session']
, $request->getSession()
및 $app['request']->getSession()
사이에서 전환을 시도했지만 아무 소용이 없습니다.Silex App에서 세션이 작동하지 않습니다.
내가 문제를 찾을 수있는 위치 사람에 관해서는 딱하다 ... 여기
은 내가 쓴 아주 간단한 테스트 응용 프로그램 (use
이 공간을 절약하기 위해 생략)입니다. 기본적 으로이 테스트는 내가 실제 애플 리케이션에서 달성하려고하는 것을 보여줍니다. 세션에 배열을 저장하려고합니다. $app->before()
에서 값이 설정되어 있는지 확인한 다음 나뭇 가지에 전달하여 표시합니다 (예 : 로그인 정보 : You are logged in as {{ user.name }}
:
<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>
/아무것도에/테스트를 갈 때 전용 "얻을 : 테스트", 표시되지 않습니다 것 :
$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.twig은 다음과 같습니다 표시됩니다 (하지만 이전에 트리거로 돌아가거나 새로 고치지 않는 것으로 실제로 저장 됨).
상단에 '$ app-> before (function ($ request) {$ request-> getSession() -> start();});' – igorw
@igorw를 추가하십시오. . 나무 용 나무를 보지 않았습니까? 저는 Zend Framework로 작업하는 장면에서 배후에서 시작되는 세션에 익숙합니다. 수동으로 시작하는 것에 대해서 생각조차하지 않았습니다. – dbrumann
대답으로 다시 게시하겠습니다. – igorw