2009-09-29 5 views
2

이 문제로 인해 미친 듯이 날아 왔습니다. 두 개의 개별 프로젝트 (둘 다 라이브러리로 PEAR를 사용하지만 완전히 다른 사용자 정의 프레임 워크로 작성)에서는 세션을 사용하는 인증을 위해 PEAR Auth를 사용하고 있습니다.PHP PEAR 인증 세션 시간 초과

로그인하면 사용자가 1 시간 이내에 로그 아웃됩니다. 나는 정확한 시간이 없지만 매우 짧습니다.

나는 다음과 같은 시도를 성공하지 못했습니다. 세션을 하루 만에 끝내려는 모든 시도.

<?php 
// Tried built-in methods to extend the idle time, called after Auth is initialised 
$auth->setIdle(86400); 

// Tried increasing the sesion timeout (before auth is called) 
ini_set('session.gc_maxlifetime', 86400); 

// Tried increasing the cookie timeout (where the phpsession is held, before auth is called) 
session_set_cookie_params(86400); 

// Tried all of the above 
?> 

이 문제가 발생한 사람이 있습니까? 그렇다면 유휴 시간을 연장 할 수 있습니까?

나는 PEAR을 준비하고 자신의 쿠키 기반 인증 클래스를 작성하려고하는데, 실제로 시간이 없다.

답변

2

지금까지이 문제가 발생하지 않았다,하지만 난 아직 덮여있다하지 않는 것 두 가지 가능성을 참조 : 당신은 setIdle 외에 인증 클래스의 setExpire() 방법을 확인할 수 있습니다

  1. 을 ().
  2. 동일한 세션 저장소 디렉토리를 사용하여 같은 서버에서 실행되는 다른 PHP 기반 앱/스크립트가 더 낮은 시간 제한으로 사용 중일 수 있습니다. session.gc_maxlifetime docs:

    에 따르면, 서로 다른 스크립트의 session.gc_maxlifetime 다른 값이있는 경우 만 는 최소 값이 데이터를 청소한다와 다음 스크립트를 세션 데이터를 저장하기 위해 같은 장소를 공유 할 수 있습니다. 이 경우, session.save_path.

+0

감사와 함께이 지침 을 사용! 나는 이것들을 시험해보고 그것이 어떻게되는지 알려줄 것이다. – teaforchris

+0

권고대로 setIdle() 외에도 setExpire()를 시도했지만 차이가없는 것으로 보입니다. 서버가 클라우드 서버이므로 세션을 어떻게 저장하는지 잘 모르겠습니다. 다른 스크립트의 간섭이있을 수 있습니다. 문제의 웹 앱에서 다른 session.save_path를 사용하면 도움이 될 것이라고 생각하십니까? – teaforchris

+0

네, 확실히 해봐야합니다. 클라우드 서버 인 경우 더 많은 PHP 응용 프로그램이 실행될 가능성이 높습니다. 따라서 이것이 범인이 될 수 있습니다. 경로가 지정되지 않은 경우 * nix 서버에서는 '/ tmp'가 기본값이므로 '/ tmp/[yourAppName]'(또는 '/ tmp/[yourAppName] 해시')과 같은 이름으로 설정하면 해결 될 수 있습니다. 당신의 문제 (적어도 다른 가능한 이유를 배제 할 것이다) –