Назад | Перейти на главную страницу

Файлы сеансов php несовместимы? - php5.2 debian lenny vs php5.3 debian squeeze

php обрезает файлы сеанса до нуля после переноса файлов сеанса с первого сервера (debian lenny php 5.2) на новый сервер (debian squeeze php 5.3).

Я создаю сеанс на первом сервере с помощью createsession.php (см. ниже) и могу просматривать содержимое сеанса с помощью dumpsession.php на том же сервере.

после копирования файлов сеанса с одного сервера на другой и переключения на второй сервер путем изменения файла моих локальных хостов у меня все еще остается тот же файл cookie с правильным идентификатором сеанса, хранящийся в браузере, новый сервер обращается к правильному файлу сеанса, но вместо отображения содержимого сеанса сервер обрезает файл сеанса до нуля и запускает новый сеанс с тем же идентификатором сеанса.

можно ли перенести файлы сеанса? serverip каким-то образом хешируется в данные сеанса?

возможно ли разделение сеанса между php5.2 и php5.3?

createsession.php

<?php
  session_name('mysession');
  session_start();
  var_dump(session_id());
  var_dump($_SESSION);
?>

dumpsession.php

<?php
  session_name('mysession');
  session_start();
  var_dump(session_id());
  $_SESSION['foo'] = 'bar';
?>

часть сеанса php.ini

[Session]
session.save_handler = files
session.save_path = "3;/var/lib/php5"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly = 
session.serialize_handler = php
session.gc_divisor     = 100
session.gc_maxlifetime = 5184000
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

изменить: мое решение переключилось обратно на debian lenny.

Вы можете исправить это, удалив php5-suhosin пакет.

aptitude remove --purge php5-suhosin

По-видимому, одна из его новых функций - это шифрование данных сеанса, которое было включено при обновлении с lenny до squeeze.

Я просто довольно долго работал над этим!

Я был бы очень удивлен, если бы он изменился (у меня нет доступа, чтобы проверить себя).

Что произойдет, если вы скопируете файл сеанса в / tmp, тогда:

$s=('/tmp/sess_' . session_id);
print_r(unserialize(substr($s, strpos($s, '|')+1)));

Я думаю, что более вероятно, что формат файла сеанса мог измениться по сравнению с изменением формата serialize (), поэтому простое использование вашего собственного обработчика сеанса может решить проблему.

В любом случае - если вы запускаете веб-сайт на нескольких машинах, вам следует попытаться сохранить одно и то же программное обеспечение для настройки на каждом из них - это значительно упрощает жизнь.