Привет.Образовалась странная проблема с сессиями:
на стороне сервера на образуется два файла сессии на запрос одного браузера.
один пустой, второй содержит информацию о переменных, но при этом, при обращении к другой странице, воспринимается именно пустой файл.Подскажите кто что заметил (пример с описанием ниже), а то я даже не понял из-за чего все перестало работать. Просто перезагрузил сервер и началась такая "ботва".
Простой пример из доков:
page1.php:<?php
// page1.php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// Works if session cookie was accepted
echo '<br /><a href="page2.php">page 2 cookie</a>';
// Or maybe pass along the session id, if needed
echo '<br /><a href="page2.php?' . SID . '">page 2 get</a>';
?>page2.php:
<?php
// page2.php
session_start();
echo 'Welcome to page #2<br />';
echo $_SESSION['favcolor']; // green
echo "<br>";
echo $_SESSION['animal']; // cat
echo "<br>";
echo date('Y m d H:i:s', $_SESSION['time']);
echo "<br>";
echo SID;
// You may want to use SID here, like we did in page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>Вывод при нажатии на ссылку "page 2 cookie":
Welcome to page #2Notice: Undefined index: favcolor in /var/www/htdocs/tour/test/page2.php on line 8
Notice: Undefined index: animal in /var/www/htdocs/tour/test/page2.php on line 10
Notice: Undefined index: time in /var/www/htdocs/tour/test/page2.php on line 12
1970 01 01 07:00:00
PHPSESSID=70ffc19ccfdf46a850fe3b91d8bee36f
page 1То есть переменные сесии не передались...
Вывод при нажатии на ссылку "page 2 get":
Welcome to page #2
green
cat
2007 01 09 19:09:44
PHPSESSID=82cf963c56fb59059892367b128978f2
page 1PHP Version 4.4.4
Кусок php.ini:register_globals = off
...
[Session]
session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 1800
session.cookie_path = /tmp
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 1
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"$ ls -l
...
drwxrwxrwt 76 root root 7472 2007-01-09 19:09 tmp
...$ ls -l /tmp/sess_*
-rw------- 1 www-data www-data 0 2007-01-09 19:17 sess_70ffc19ccfdf46a850fe3b91d8bee36f
-rw------- 1 www-data www-data 56 2007-01-09 19:17 sess_7120461440b7b1a6dfe5fa777dbe993d$ cat sess_7120461440b7b1a6dfe5fa777dbe993d
favcolor|s:5:"green";animal|s:3:"cat";time|i:1168348677
Ох и долго я голову ломал.
А причина оказалась простой... Как обычно :)
session.cookie_path = /tmpэта дириктива указывает что куки работают только в директории tmp
в корневой директории документов сервера, короче DocumentRoot "/var/www/htdocs"другими словами при такой директиве куки работают только для страниц которые лежат внутри
/var/www/htdocs/tmpНу рад буду если комуто помог.
Да! загадка осталась только одна: непосредственно перед перезагрузкой сервера
php.ini я не трогал и не помню чтобы была необходимость менять что-то в разделе сессий раньше.
Ну всеже похоже менял...Всем наискорейшего и осмысленного решения проблем!