2014-10-22 3 views
1

동일한 세션을 공유하는 두 개의 하위 도메인이 있습니다. 나는 하나의 서버를 가지고 사용하고, 나는 모든 하위 도메인 같은 쿠키를 유지 할 수 있도록하여 php.ini을 다음했다 :redis의 PHP 세션은 session.cookie_domain 구성을 무시합니다.

session.cookie_domain = ".mydomain.com" 

을 서버가 다음 설정 쿠키 반환하게이 구성을 사용 :

Set-Cookie: PHPSESSID=aumsloucmjspvs1mbvromqq1b5; path=/; domain=.mydomain.com 

이제 서버 수가 거의 없으므로 모든 서버간에 세션을 공유하려면 Redis을 사용하고 싶습니다. 나는 서버를 설정하고 다음 php.ini에 추가 :

session.save_handler = redis 
session.save_path = tcp://192.1.1.1:6379?auth=noauth 

세션은 서버에 성공적으로 저장되지만 반환 세트 - 쿠키는 올바르지 않습니다

Set-Cookie: PHPSESSID=cec074e4d961ff6c800c21b7466c7d5a; path=/ 

그래서에 옆에있는 전화 클라이언트가 다른 하위 도메인에 연결하면 첫 번째 하위 도메인에서 가져온 쿠키가 보내지지 않습니다.

나는 phpinfo()에 세션에서, 2.2.5 레디 스, PHP 5.3.18을 사용하고 있습니다 :

Directive    Local Value Master Value 
session.auto_start  Off   Off 
session.bug_compat_42 Off   Off 
session.bug_compat_warn Off   Off 
session.cache_expire 180   180 
session.cache_limiter nocache  nocache 
session.cookie_domain .example.com  .example.com 
session.cookie_httponly Off   Off 
session.cookie_lifetime 0   0 
session.cookie_path /  /
session.cookie_secure Off   Off 
session.entropy_file no value  no value 
session.entropy_length 0   0 
session.gc_divisor  1000   1000 
session.gc_maxlifetime 43200  43200 
session.gc_probability 1   1 
session.hash_bits_per_character 5 5 
session.hash_function 0   0 
session.name   PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files  files 
session.save_path /var/lib/php/session  /var/lib/php/session 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies On On 
session.use_trans_sid 0 0 

어떤 생각 내가 어떻게 서버를 강제 할 수있는 적절한 설정 - 쿠키를 보내?

+0

이해가 안 : 레디 스 접두사가 나를 위해 문제를 해결 가지고 –

+0

yea, 나는 그것을 시도했지만 도움이되지 않았다. ( – Kuf

+0

런타임에'ini_get ('session.cookie_domain')'에 대해 어떤 값을 얻습니까? –

답변

0

팁을 친구에게서 받았을 때, 나는 동일한 구성을 /etc/httpd/conf.d/php.conf으로 옮겼습니다. 알 수없는 몇 가지 이유로 그것이 작동하기 시작했습니다!

여기있는 사람이 도움을받은 이유를 이해하면 그 이야기를 듣고 싶습니다. 다른 사람들도 같은 문제로 도움이되기를 바랍니다. 경로가 세션 쿠키에 사용되는 도메인을 변경하는 것입니다 저장 세션을 변경하는 방법

session_name('PHPREDIS_SESSION'); 
0

세션의 이름을 설정합니다. 그것은 이상한 행동입니다. 혹시`session_set_cookie_params()`를 사용하여 런타임에 쿠키 경로를 설정하여 다른 동작을 얻을 수 있는지 확인해 보셨습니까?