Я пытался сохранить сеансовые переменные между двумя поддоменами и нашел это невозможным. В итоге я создал 2 минимальных веб-страницы PHP в качестве тестового стенда, один из которых я называю «тест 1», просто устанавливает
$_SESSION['test'] = "Fred";
и имеет гиперссылку на 'test 2', которая просто пытается отобразить значение $ _SESSION ['test'], чтобы доказать, работает или нет. Я размещаю «test 1» в моем домене www и «test 2» в моем поддомене. Я пробую разные версии того, что должно идти в шапке, из разных источников. Вот основные 3 (и, конечно, их варианты):
ini_set('session.cookie_domain',substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100));
session_start();
или
ini_set('session.cookie_domain','mydomain.com');
session_start();
или
ini_set('session.cookie_domain', PHP_INI_ALL);
session_start();
или
session_set_cookie_params(0, "/", ".mydomain.com", false);
session_start();
Я считаю, что в каждом случае я получаю одинаковый результат. Сеанс не передается по поддоменам, и тест страницы 2 не знает, какое значение я установил для $ _SESSION ['test']. Тем не менее, по всей видимости, в сети достаточно уверенности в том, что один из вышеуказанных методов должен работать. Любая идея, что может происходить, тем более что я использую минимальные страницы для проверки механизма (никаких побочных эффектов, которые я вижу)? Кстати, я на общем сервере, если это уместно здесь.
Спасибо за ваши мысли. Франк.
Редактировать .
Я исправил это. Проблема была вызвана Suhosin. Смотрите подробный ответ в нижней части этой страницы.