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

Передача переменных в PHP $ _SESSION между поддоменами

Недавно я купил пакет 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, если его там нет.