Сессии | Symfony

Дата обновления перевода 2023-01-11

Symfony предоставляет объект сессий и несколько утилит, которые вы можете использовать для хранения информации о пользователе между запросами.

Сессии предоставляются компонентом HttpFoundation, который включен во все приложения Symfony, независимо от того, как вы ее устанавливали. До использования сессий, посмотрите на конфигурацию по умолчанию:

  • YAML
  • XML
  • PHP

Установка опции конфигурации handler_id как null, означает, что Symfony будет использовать нативный PHP-механизм сессий.

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

Если вы хотите, вы можете использовать сервис session.handler.native_file в качестве handler_id, чтобы позволить Symfony управлять сессиями самостоятельно. Другая полезная опция — save_path, которая определяет каталог, в котором Symfony будет хранить файлы метаданных сессии:

  • YAML
  • XML
  • PHP

Просмотрите справочник конфигурации Symfony, чтобы узнать больше о других доступных опциях конфигурации Сессии . Вы также можете хранить сессии в базе данных.

Сессия доступна через Request и RequestStack. Symfony предоставляет сервис request_stack

, который внедряется в ваши сервисы и контроллеры, если вы используете в аргументе подсказку RequestStack:

Сохраненные атрибуты остаются в сессии до конца этой сессии пользователя. По умолчанию, атрибуты сессии — это пары ключ-значение, управляеыые классом AttributeBag.

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

  • Храните сессии в базе данных
  • Как сделать локаль «липкой» во время сессии пользователя
  • Свяжите унаследованные приложение с сессиями Symfony
  • Примеры прокси сессии

Устранение проблем со входом в систему | Устранение неполадок

Введение

Если при вводе данных для входа система перенаправляет вас на страницу входа без ошибки, это указывает на проблему с сессиями PHP на вашем сервере.

Вы можете подтвердить это, отметив Запомнить меня на странице входа:

Если вы вошли в систему и отметили эту опцию, это подтверждает наличие проблемы с сеансами PHP.

Также может проявляться как Недопустимый токен защиты csrf , сообщение об ошибке.

Общие вещи для проверки включают:

  • Сконфигурированный путь сеанса tmp недоступен для записи.
  • Путь настроенного сеанса tmp заполнен.
  • Неправильная конфигурация прокси или CDN перед вашим веб-сервером.

Это проблема уровня конфигурации PHP или среды. Пользователям с общим доступом или реселлерам потребуется помощь их хостинг-провайдеров.

PHP-сессия

WHMCS определит распространенные причины проблем с сеансом PHP и отобразит их в Конфигурация > Состояние системы

.

Дополнительные сведения см. в разделе Поддержка сеансов PHP.

 

Если вы не можете получить доступ к административной области WHMCS:

  1. Загрузите sessiontest. php  (ниже) в корневую папку вашего сервера.
  2. Посетите его в своем браузере.
    • При каждом обновлении страницы число должно увеличиваться (например, 1 , 2 , 3 , 4 ).
    • Также будет отображаться сообщение, подтверждающее, что место хранения сеансов на основе файлов PHP на вашем сервере доступно для записи.

Если на вашем сервере номер остается равным 1 или появляется предупреждение о том, что путь сеанса PHP недоступен для записи , существует проблема с конфигурацией сеансов PHP.

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

sessiontest.php

Прокси или CDN

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

Справку по настройке WHMCS для использования с прокси-серверами, балансировкой нагрузки и CDN см.

в разделе Параметры доверенных прокси-серверов.

Обходные пути

Отключить проверки IP-адреса сеанса

В качестве меры безопасности WHMCS сравнивает IP-адрес посетителя с ожидаемым значением.

Чтобы временно отключить это:

  1. Перейдите на вкладку Безопасность в Конфигурация > Настройки системы > Общие настройки .
  2. Проверить Отключить проверку IP-адреса сеанса .
  3. Щелкните Сохранить изменения
    .

Если вы не можете получить доступ к административной области WHMCS для просмотра этой страницы, выполните следующий запрос к базе данных WHMCS с помощью такого инструмента, как phpMyAdmin: ‘;

Переключиться на хранилище сеансов базы данных

Система хранит данные сеанса базы данных в неструктурированных файлах в месте конфигурации PHP. Хранение данных сеанса в базе данных MySQL® желательно в некоторых конфигурациях среды и может помочь при проблемах с хранением файлов.

Дополнительные сведения см. в документации по сеансам.

Отладка с нулевой конфигурацией | Документация PhpStorm

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

Инициировать сеанс отладки

Прежде чем приступить к отладке, убедитесь, что модуль отладки установлен и правильно настроен. PhpStorm поддерживает отладку с помощью двух самых популярных инструментов: Xdebug и Zend Debugger. Эти инструменты нельзя использовать одновременно, потому что они блокируют друг друга. Чтобы избежать этой проблемы, вам необходимо обновить соответствующие разделы в файле php.ini, как описано в разделах Настройка Xdebug и Настройка Zend Debugger.

Чтобы инициировать сеанс отладки с нулевой конфигурацией, выполните следующие общие действия.

Подтвердить установку механизма отладки

Включить прослушивание входящих отладочных соединений

  • Переключить кнопку «Начать прослушивание отладочных подключений PHP» на панели инструментов или в строке состояния PhpStorm, чтобы она изменилась на . После этого PhpStorm начинает прослушивать порт отладчика, используемый в текущем проекте. Порты отладки устанавливаются на уровне PhpStorm на странице PHP | Страница отладки диалогового окна «Настройки» ( Ctrl+Alt+S ).

Установите точки останова в коде

  • Установите точки останова в коде, выполнив любое из следующих действий:

    Или выберите Run | Прервать первую строку в PHP-скриптах, чтобы отладчик остановился, как только будет установлено соединение с PhpStorm (вместо автоматического запуска до достижения первой точки останова).

Активировать отладчик на сервере

  • Чтобы разрешить запуск и остановку отладчика из браузера, необходимо установить специальный GET / Параметр POST или COOKIE . Вы можете сделать это вручную в файле конфигурации php.ini или использовать одно из доступных расширений отладки браузера. Если вы используете браузер, для которого нет расширения, вы можете создать букмарклеты Start Debugger/Stop Debugger и добавить их на панель инструментов вашего браузера.

    Активируйте расширение отладки в браузере:

    Дополнительные сведения о настройке параметров вручную см. в разделе Запуск отладчика для Xdebug и отладчик Zend Параметры запроса GET для отладчика Zend.

Начать сеанс отладки

  1. Перезагрузить страницу в браузере и вернуться в PhpStorm. В диалоговом окне Incoming Connection From выберите сопоставления путей, чтобы PhpStorm мог сопоставлять удаленные файлы на веб-сервере с локальными файлами в вашем проекте. Если у вас есть определенная конфигурация развертывания, PhpStorm предложит настроить сопоставления на основе путей, которые вы уже установили в этой конфигурации.

  2. После достижения точки останова отладчик приостанавливается. Теперь вы можете исследовать приложение.

  3. Продолжить выполнение программы и проверить ее кадры, как только она снова будет приостановлена.

    • Чтобы управлять выполнением программы вручную, пошагово выполняйте код с помощью команд меню «Выполнить» или кнопок панели инструментов: «Вход» F7 , «Выход» Shift+F8 , «Переход» F8 и другие. Дополнительные сведения см. в разделе Пошаговое выполнение программы.

    • Чтобы программа выполнялась автоматически до следующей точки останова, возобновите сеанс, выбрав Run | Действия по отладке | Возобновить программу или нажать Ф9 .

Укажите сценарии для пропуска запросов к

Вы также можете указать запросы сценариев, которые вы хотите, чтобы PhpStorm игнорировал во время отладки. Этот подход может быть полезен, когда ваше приложение содержит скрипты, использующие AJAX. Предположим, у вас есть файл menu-ajax-script.php, который «перезагружает» часть вашей веб-страницы. Этот скрипт работает правильно, поэтому вам не нужно его отлаживать. Однако этот сценарий по-прежнему запрашивается во время сеанса отладки. Чтобы входящие подключения к этому скрипту игнорировались, добавьте скрипт menu-ajax-script.php в список пропущенных путей.

Если сценарий добавлен в Пропущенные пути, он пропускается только при запуске для него сеанса отладки. Чтобы игнорировать сценарий при пошаговом выполнении программы во время сеанса отладки, настройте пошаговый фильтр.

  1. В диалоговом окне настроек ( Ctrl+Alt+S ) перейдите в PHP | Отладка | Пропущенные пути.