Сеансы PHP через поддомены, когда не разрешено редактировать php.ini

Мой хост (один) не позволяет мне изменять файл php.ini, и я не могу его найти (у меня, вероятно, даже нет доступа для чтения). Когда я пытаюсь заставить переменные сеанса проходить через поддомены, я не могу, поскольку файл cookie сеанса установлен только для основного домена (example.com). Я бы хотел, чтобы он был настроен на .example.com

Я попытался настроить файл php ini, чтобы разрешить это.

ini_set('session.cookie_domain', '.example.com');

Это не сработало, потому что мне не разрешено запускать функцию ini_set(). Я также попытался найти файл php.ini, но не смог найти его в моем FTP-клиенте. Используя phpinfo(), я обнаружил, что он находится в /etc/php, но у меня нет доступа к этому каталогу.

Я ожидаю, что это сработает, но очевидно, что это не так. Проверяя консоль разработчика в Firefox, путь к домену для файла cookie PHPSESSID по-прежнему example.com, а не .example.com.

Есть ли какое-либо обходное решение, кроме установки переменных сеанса в правильном поддомене с самого начала?

Никакая разумная служба виртуального хостинга не позволяет клиентам возиться с общесистемными настройками PHP, но это почти всегда излишне, учитывая, что вы можете использовать .htaccess, .user.ini или ini_set() для большинства целей. Однако, если сам ini_set() был забанен (это то, что вы имеете в виду, не так ли?), Это явный признак того, что они не хотят, чтобы вы что-либо настраивали. В таком случае поиск способа может привести к удалению аккаунта из-за нарушения условий использования. Наверное, это даже не многосайтовый план. Всего два цента.

Álvaro González 28.12.2018 13:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
177
3

Ответы 3

Вы можете установить переменную ini таким образом, прежде чем session_start ()

ini_set('session.cookie_domain', '.example.com' );

или для этого вопроса вы можете установить в файле htaccess вот так:

php_value session.cookie_domain .example.com

и из этого отвечать:

    if (isset($_COOKIE['session_id']))
        session_id($_COOKIE['session_id']);
    Zend_Session::start(); //or session_start();
    if (!isset($_COOKIE['session_id']))
        setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');

в конце, если какой-либо из этих способов не работает, вы можете изменить имя_сеанса

 session_name('example_name');

затем используйте следующий код на странице php

session_set_cookie_params(0,"/",".example.com",FALSE,FALSE);
setcookie(session_name(), session_id(),0,"/","example.com");
session_start();

для получения дополнительной информации см. этот вопрос

Ясно, что вы не читали мой пост. Мне не разрешено запускать функцию ini_set. Метод .htaccess тоже не работает.

Samuel Andersson 28.12.2018 13:09

Параметры сессионных файлов cookie также можно установить с помощью session_set_cookie_params (). Домен - третий аргумент.

Это не лучшее решение!

Что касается вашей ситуации, и если вы не можете установить ее с помощью .htaccess, вы можете сделать перенаправление на свой субдомен (-а), создать сеанс и перенаправить обратно на URL-адрес, где вы хотите быть,

БЫВШИЙ : example.com -> любое действие -> перейти на sub1.example.com -> создать сеанс -> перейти на sub2.example.com -> создать сеанс -> ... -> перейти на example.com

Или : Вы также можете создать пиксельное изображение со ссылками на ваши поддомены, если не хотите использовать перенаправление

Чтобы эти два решения работали, вам необходимо настроить сеансы отдельно для каждого поддомена.

Другие вопросы по теме