Мне не удалось разобраться в этой проблеме - она просто не имеет никакого смысла.
Сервер PHP 5.2.6, работающий под управлением Windows NT PDP-IIS 5.2, сборка 3790.
Сначала я подтвердил, что сеансы работают через этот тестовый скрипт:
<?php
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Counter ".$_SESSION['counter']++.".<br><a href=".$_SERVER['PHP_SELF'].">reload</a>";
?>
Счетчик увеличивается - работает.
Мой сайт использует специально созданный MVC-фреймворк (я его написал), и для целей тестирования я добавил последний код функции приложения:
<code>echo session_id(); echo '<pre>'; var_dump($_SESSION); echo '
';
session_write_close (); выход();
Первые несколько строк этого файла:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
session_start();
Сессия выгружается и выглядит, как и ожидалось. Теперь я иду на сервер и открываю файл сеанса - и результат, похоже, зависит от того, какой браузер я использую. Для Chrome и Safari файл сеанса был пустым. Для Opera и IE8 файл сеанса выглядел нормально. Я доберусь до FireFox через минуту, но в этот момент FireFox выглядел нормально.
Таким образом, для целей тестирования сразу после session_start () я добавил следующие строки:
$_SESSION['bogus'] = -5;
$_SESSION['test'] = 'other';
Я закрыл свои браузеры и снова попробовал сайт, чтобы быть уверенным, что у меня новый сеанс. Снова Opera и IE8 сессионные файлы появились нормально. И Chrome, и Safari имели фиктивные и тестовые значения, но другие мои значения SESSION отсутствовали. FireFox сначала имел ту же проблему, что и Chrome и Safari, но после обновления страницы обнаружилась оставшаяся часть сеанса. Обновление не помогло Chrome или Safari.
Вот как выглядит var_dump на этом этапе:
array(3) {
["bogus"]=>
int(-5)
["test"]=>
string(5) "other"
["saved_form"]=>
array(1) {
["dgvSJM"]=>
array(4) {
["method"]=>
string(4) "post"
["processor"]=>
string(0) ""
["formid"]=>
string(10) "searchForm"
["fields"]=>
array(2) {
["searchTerm"]=>
array(5) {
["label"]=>
string(10) "SearchTerm"
["type"]=>
string(6) "search"
["required"]=>
bool(false)
["multiple"]=>
bool(false)
["selectempty"]=>
string(6) "B5BMXw"
}
["formInput_0"]=>
array(5) {
["label"]=>
string(0) ""
["type"]=>
string(6) "submit"
["required"]=>
bool(false)
["multiple"]=>
bool(false)
["selectempty"]=>
string(6) "TkZUfo"
}
}
}
}
}
Я создал другой веб-сайт с другим поддоменом и точно скопировал мой код - и он отлично работает. «Save_form» отлично отображается в файлах сеанса. Поэтому я попытался удалить исходный веб-сайт и создать его заново - проблема не помогла.
Кто-нибудь знает, что происходит и / или как я могу это исправить?
Спасибо.