Недавно я купил пакет VDH, и мне нужно иметь возможность общаться между субдоменами с помощью массива $ _SESSION. Система построена с учетом этого. Я пояснил, что это было возможно с помощью службы VDH перед покупкой, но они не оказали особой помощи в выяснении ситуации.
Я провел много исследований и следую всем данным советам, но не могу заставить их работать. У меня есть базовая настройка тестирования, где одна страница устанавливает переменную сеанса, а на другом субдомене выводит сеанс. Текущий результат состоит в том, что данные сеанса отсутствуют, но идентификатор сеанса на тестовых страницах бота тот же.
Все домены находятся в одной коробке.
Тестовый файл один
$session_name = session_name("er435536311993");
session_set_cookie_params(0, '/', '.mysite.com.au');
@session_start();
$_SESSION['this_is_test'] = 'This was set in the sub domain';
echo '<pre>';
var_export($_SESSION);
echo 'done';
var_export(session_id());
Тестовый файл два
$session_name = session_name("374WEaPW2me1392ZQWLM");
session_set_cookie_params(0, '/', '.whoadelaide.com.au');
@session_start();
echo '<pre>';
var_export($_SESSION);
var_export(session_id());
В некоторых местах упоминалось, что это может быть ошибка разрешений. У меня есть доступ к файлу httpd.conf, и я настроил одинаковые права пользователя и группы, но данные все равно не передаются.
Насколько я могу судить, все домены обращаются к тому же пространству tmp, где хранится дата сеанса.
Служба поддержки упомянула, что я должен отключить suPHP и Euexec, чтобы они заработали. Это не повлияло на результат.
Я нигде в сети не могу найти решение своей проблемы. Я перепробовал все возможные решения, от вариантов кода PHP до настройки разрешений.
Я пробовал некоторые из упомянутых мной команд оболочки, но они не работали. CMD в оболочке мне не знаком. Я установил Putty и немного устал от этого.
Есть ли у кого-нибудь идеи? Я могу что-нибудь попробовать? Мой клиент
В конце концов я нашел решение, и оно сработало. Мне нужно было отключить suhosin в php. Я даже не уверен, что такое сухосин, но это сработало.
Добавление
suhosin.session.cryptdocroot=Off
suhosin.cookie.cryptdocroot=Off
В конце файлов php.ini разобрал.
Почему вы подавляете ошибки для session_start()
? Именно здесь и могут появиться ошибки.
Удалите символы @ и проверьте журнал ошибок php.
Кроме того, после первого теста найдите файл сеанса в своей файловой системе и добавьте вывод ls -l <session file>
и содержимое этого файла на ваш вопрос. Если это не решит вашу проблему, сделайте то же самое после второго теста.
Файлы сеанса обычно находятся в /var/lib/php5/
но ваш может быть другим. Проверьте свой php.ini, если его там нет.