2012-01-26 3 views
1

ion_auth를 사용하는 Codeigniter/PyroCMS를 사용하고 있습니다.신비한 세션 종료 버그 추적

2 시간 동안 세션을 설정했습니다. db 세션을 사용하고 있습니다.

n 분 후에 세션을 부팅하는 gremlin 어딘가가 있습니다. 그것은 매우 무작위이며, 따라서 하드 을 재현하는 것은 불가능합니다.

세션 항목 (특히 sess_destroy)에 로그 항목을 추가했지만 이미 알고있는 세션을 기록하기 만합니다.

해당 로그 항목에 debug_backtrace()를 추가하려고했지만 teh 코드로 jiving하지 않아도됩니다 (! 세션 리다이렉션 이전에 화면에 기록/기록되지 않습니다).

이것을 추적하는 좋은 방법이 있습니까?

고마워.


갱신 : Session.php 더 내가 추가 몇 로그 항목을 잘못 덮어 쓰기/삭제되고있는 DB 세션을 해제합니다. 세상에?

답변

0

서버 및 resolve.conf 매핑 작업에 문제가있는 것으로 보입니다.

0

세션 쿠키와 같은 소리가 너무 일찍 만료됩니다. 세션 관련 내용에 대한 설정 파일의 설정을 확인하여 시작하십시오. 즉, $ config [ 'sess_expiration'] 값은 기본값 7200입니다. 2 시간입니다.

그럼 난 당신의 코드는 유닉스 시스템에있는 경우, 시도 말할 것이다, 그렇지 않으면 내가 3600 (1 시간)에 기본값을 생각 php.ini 파일,

을 점검하십시오

grep -Rn 'sess_destroy' . 

당신이 찾고자 할 수도있는 다른 것은 세션에 NULL이나 빈 값을 쓸 수있는 곳이다. 어디서나 sess_destroy를 가질 수는 없지만 unset ($ _ SESSION)의 효과가있는 것일 수 있습니다.

희망이 도움이됩니다.

+0

일부 구성의 결과로 일찍 만료되는 것은 아니며 'n'시간 이후에 만료됩니다. 세션 만료는 config에서 2 시간으로 설정됩니다. php.ini가 올바르게 설정되었습니다. – stormdrain

+0

세션이 저장되는/tmp 디렉토리와 관련된 일을하고있는 cron 작업을 실행하고 있습니까? 해당 세션 파일이 삭제되면 만료에 관계없이 활성 세션에 작별 인사를하십시오. – Skittles

+0

아니요 더 많은 로그에 따르면 db 세션이 삭제되고 있거나 인증되지 않은 새 세션이 시작되었습니다.나는 주위를 감싸고 내 문제에 대한 $ _SESSION 후보자를 찾지 못했습니다. 또한 모든 sess_destroy()의 로깅을 추가하고 db 세션이 없어지면 호출되지만 db 세션을 삭제하는 것이 무엇인지 찾을 수 없습니다. 감사. – stormdrain

1

이것은 상당히 일반적인 문제입니다. 나는 Codeigniter's Native session (하단에 다운로드 링크가 있음)을 사용했습니다 (추천으로 기꺼이 받아 들였습니다).

그러나 이것은 오래된 라이브러리이므로 해킹을해야합니다. 그 간단한 해킹을 확인할 수 있습니다 library's forum

이 파일을 codeigniter의 라이브러리 디렉토리에 놓고 문제가 해결되었는지 확인하십시오. 피드백을주십시오.

+0

문제는 내가 사용하고있는 프레임 워크 (PyroCMS)가 ion_auth에 달려 있다는 것입니다. 감사. – stormdrain

+0

@stormdrain 필자는 pyrocms를 사용하여 큰 사이트'r.gd'를 만들었습니다. 정확하게 그 프레임 워크에서 제가 사용했던 라이브러리를 사용했습니다. 너 해봤 니? 문제는 동일합니다. 불안정한 세션. –

+0

흥미 롭습니다. 사이트가 파이로 관리 패널을 통합 했습니까? 나는 그곳의 기능이 ion_auth (새로운/편집 사용자 등)와 밀접하게 연관되어 있다고 생각했다. 다시 한번 감사드립니다. – stormdrain