1

여러분이 전에이 문제를 겪었는지 확인하고 그 이유를 이해할 수있는 기회가 있는지 확인하고 싶습니다.Zend_Application을 사용하는 이상한 Zend_Session 동작

이것은 이야기입니다.

Zend Framework v. 1.8 이전에 많은 ZF 응용 프로그램을 개발 한 후 약 18 개월 동안 중단했습니다. 이제 Zend Framework를 다시 사용하기로 결정한 새로운 프로젝트를 시작해야했습니다.

로컬 서버에 1.11.3 버전이 설치되어있어서 최신 릴리스를 다운로드하지 않았습니다. 나는이 같은 Zend_Session 인스턴스로 내 config.ini 파일 내 세션 옵션을 넣어 한 다음로드 세션을 시작하는 데 사용되는 Bootstrap.php 파일로 Zend_Application를 사용하기 전에

:

의 config.ini

sessions.name = NAME 
sessions.use_only_cookies = 1 
sessions.save_path = APPLICATION_PATH "/../tmp/sessions" 
sessions.strict = on 
sessions.remember_me_seconds = 1800 
응용 프로그램 시작하기 전에 (공공 웹 서버의 디렉토리에)

의 index.php : 다양한 유용한 메타와

Globals::startSession(); 

사용자 정의 전역 클래스를 ODS는 :

class Globals 
    { 
      static public function startSession() 
      { 
      $sessions_conf = self::getConfig()->sessions; 
      Zend_Session::setOptions($sessions_conf->toArray();); 
      Zend_Session::start(); 
      } 
    } 

이 항상 (Zend_Session_Namespace와 함께 사용) 내 세션을 활성화 및 save_path에서 세션 파일을 저장, 아주 잘 근무하고있다.

매뉴얼 단순히 "섹션"자원 아래 application.ini 파일에서 세션 옵션을 저장하고 Zend_Session이 자동으로 구성됩니다 알려줍니다 Zend_Application으로

...

나는 이런 식으로했다 :

; SESSIONS 
resources.session.name = NAME 
resources.session.use_only_cookies = 1 
resources.session.save_path = APPLICATION_PATH "/../tmp/sessions" 
resources.session.strict = on 
resources.session.remember_me_seconds = 1800 

작동하지 않았습니다.

$this->bootstrap('session'); 
: 는 그래서 클래스의 시작 부분에 그들을 가하고 그들에 코드를 작성, (!하지 동시에) 사용하는 _initSession()와 _initForceSession()는 Bootstrap.php 파일의 방법을 시도

하지만 세션이 작동하지 않았고 데이터가 http 요청 사이에 저장되지 않았고 세션 파일이 save_path에 기록되지 않았습니다. ...

아무도 알려지지 않은 경우 정상적인 동작인지 알려주세요. 어딘가에 ...)?

분명히 이전의 방법을 다시 구현하는 문제가 해결되었지만 완벽하게 작동하지만 올바르게 사용하는 방법을 배우고 싶습니다.

미리 감사드립니다. 당신의 Bootstrap.php에서

+0

_initSession() 및 _initForceSession() (다른 경우) 코드를 게시 할 수 있습니까? –

+0

아니요, 코드는 동일합니다. Zend_Session :: start()에 대한 호출 만 있습니다. – Alessandro

답변

0

public function _initSession() 
{ 
Zend_Session::start(); 
} 

세션 옵션을 켜의 경우이어야한다 application.ini

+0

나에게 제안한 것처럼 _initSession()을 사용했지만 결과가 없다면 RockyFord 사용자가 자신의 제안에 맞을 수도 있다고 생각합니다. 내일 구현하기 위해 노력하겠습니다. – Alessandro

+0

이 솔루션은 나에게 RockyFord의 것과 같은 결과를 제공합니다. 세션 파일은 지정된 save_path에 저장되지 않습니다. – Alessandro

1

이 설정할 수 있습니다 추가하고 작동하기 쉬운에 그것을 만들었다했을 수 있습니다.

응용 프로그램에서 옵션을 설정하는 방법에 문제가있을 수 있습니다.INI :

; SESSIONS 
resources.session.name = NAME 
resources.session.name.use_only_cookies = 1 
resources.session.name.save_path = APPLICATION_PATH "/../tmp/sessions" 
resources.session.name.strict = on 
resources.session.name.remember_me_seconds = 1800 

세션 설정 옵션을 설정할 reference manual

에있어서, 상기베이스 이름에 전달하는 배열의 키로서 (". 세션"부분 후의 이름 )를 포함 Zend_Session :: setOptions().

옵션을 올바르게 설정하면 _initSession() 부트 스트랩이 제대로 작동합니다.

public function _initSession() 
{ 
Zend_Session::start(); 
} 

P. 항상 Zend_Session_Namespace를 사용하지만 거의 전역 세션을 처리하지 않습니다.

+0

힌트를 보내 주셔서 감사합니다. 내일 시도해보고 작동하도록 할 수 있는지 알려 드리겠습니다. 바르게. – Alessandro

+0

아무 것도하지 않고 세션 후에 기본 이름을 사용하려고했습니다. 내 application.ini 파일에있는 일부 파일과 Bootstrap.php 파일에서 _initSession() 함수를 설정하십시오.하지만 이전과 같이 save_path에 세션 파일이 저장되지 않았습니다. 이유를 이해할 수 없습니다. – Alessandro

+0

지금 var_dump (Zend_Session :: getOptions())를 사용하여 테스트를 수행했습니다. Bootstrap.php 파일의 내 _initSession()에서 ini 옵션 중 아무 것도 설정되지 않은 것으로 보입니다. – Alessandro