Сессии | Symfony
Дата обновления перевода 2023-01-11
Symfony предоставляет объект сессий и несколько утилит, которые вы можете использовать для хранения информации о пользователе между запросами.
Сессии предоставляются компонентом HttpFoundation, который включен во все приложения Symfony, независимо от того, как вы ее устанавливали. До использования сессий, посмотрите на конфигурацию по умолчанию:
- YAML
- XML
- PHP
Установка опции конфигурации handler_id
как null
, означает, что Symfony
будет использовать нативный PHP-механизм сессий.
Если вы хотите, вы можете использовать сервис session.handler.native_file
в качестве handler_id
, чтобы позволить Symfony управлять сессиями самостоятельно.
Другая полезная опция — save_path
, которая определяет каталог, в котором Symfony
будет хранить файлы метаданных сессии:
- YAML
- XML
- PHP
Просмотрите справочник конфигурации Symfony, чтобы узнать больше о других доступных опциях конфигурации Сессии . Вы также можете хранить сессии в базе данных.
Сессия доступна через Request
и RequestStack
. Symfony предоставляет сервис request_stack
Сохраненные атрибуты остаются в сессии до конца этой сессии пользователя. По умолчанию, атрибуты сессии — это пары ключ-значение, управляеыые классом AttributeBag.
Сессии автоматически запускаются каждый раз, когда вы читаете, пишете или просто проверяете существование данных в сессии. Это может навредить производительности вашего приложения, так как все пользователи получат куки сессии. Для того, чтобы предотвратить это, вы должны полностью избежать доступа к сессии.
- Храните сессии в базе данных
- Как сделать локаль «липкой» во время сессии пользователя
- Свяжите унаследованные приложение с сессиями Symfony
- Примеры прокси сессии
Устранение проблем со входом в систему | Устранение неполадок
Введение
Если при вводе данных для входа система перенаправляет вас на страницу входа без ошибки, это указывает на проблему с сессиями PHP на вашем сервере.
Вы можете подтвердить это, отметив Запомнить меня на странице входа:
Если вы вошли в систему и отметили эту опцию, это подтверждает наличие проблемы с сеансами PHP.
Также может проявляться как Недопустимый токен защиты csrf
, сообщение об ошибке.
Общие вещи для проверки включают:
- Сконфигурированный путь сеанса
tmp
недоступен для записи. - Путь настроенного сеанса
tmp
заполнен. - Неправильная конфигурация прокси или CDN перед вашим веб-сервером.
Это проблема уровня конфигурации PHP или среды. Пользователям с общим доступом или реселлерам потребуется помощь их хостинг-провайдеров.
PHP-сессия
WHMCS определит распространенные причины проблем с сеансом PHP и отобразит их в Конфигурация > Состояние системы
Дополнительные сведения см. в разделе Поддержка сеансов PHP.
Если вы не можете получить доступ к административной области WHMCS:
- Загрузите
sessiontest. php
(ниже) в корневую папку вашего сервера. - Посетите его в своем браузере.
- При каждом обновлении страницы число должно увеличиваться (например,
1
,2
,3
,4
). - Также будет отображаться сообщение, подтверждающее, что место хранения сеансов на основе файлов PHP на вашем сервере доступно для записи.
- При каждом обновлении страницы число должно увеличиваться (например,
Если на вашем сервере номер остается равным 1
или появляется предупреждение о том, что путь сеанса PHP недоступен для записи , существует проблема с конфигурацией сеансов PHP.
Вам необходимо связаться с администратором сервера или хостинг-провайдером, чтобы изучить и устранить эту неправильную конфигурацию.
sessiontest.phpПрокси или CDN
Если ваш сервер находится за прокси-сервером, балансировщиком нагрузки или CDN, причиной проблемы с сеансом может быть неправильная конфигурация.
Справку по настройке WHMCS для использования с прокси-серверами, балансировкой нагрузки и CDN см.
Обходные пути
Отключить проверки IP-адреса сеанса
В качестве меры безопасности WHMCS сравнивает IP-адрес посетителя с ожидаемым значением.
Чтобы временно отключить это:
- Перейдите на вкладку Безопасность в Конфигурация > Настройки системы > Общие настройки .
- Проверить Отключить проверку IP-адреса сеанса .
- Щелкните Сохранить изменения
Если вы не можете получить доступ к административной области 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.
Начать сеанс отладки
Перезагрузить страницу в браузере и вернуться в PhpStorm. В диалоговом окне Incoming Connection From
выберите сопоставления путей, чтобы PhpStorm мог сопоставлять удаленные файлы на веб-сервере с локальными файлами в вашем проекте. Если у вас есть определенная конфигурация развертывания, PhpStorm предложит настроить сопоставления на основе путей, которые вы уже установили в этой конфигурации. После достижения точки останова отладчик приостанавливается. Теперь вы можете исследовать приложение.
Продолжить выполнение программы и проверить ее кадры, как только она снова будет приостановлена.
Чтобы управлять выполнением программы вручную, пошагово выполняйте код с помощью команд меню «Выполнить» или кнопок панели инструментов: «Вход» F7 , «Выход» Shift+F8 , «Переход» F8 и другие. Дополнительные сведения см. в разделе Пошаговое выполнение программы.
Чтобы программа выполнялась автоматически до следующей точки останова, возобновите сеанс, выбрав Run | Действия по отладке | Возобновить программу или нажать Ф9 .
Укажите сценарии для пропуска запросов к
Вы также можете указать запросы сценариев, которые вы хотите, чтобы PhpStorm игнорировал во время отладки. Этот подход может быть полезен, когда ваше приложение содержит скрипты, использующие AJAX. Предположим, у вас есть файл menu-ajax-script.php, который «перезагружает» часть вашей веб-страницы. Этот скрипт работает правильно, поэтому вам не нужно его отлаживать. Однако этот сценарий по-прежнему запрашивается во время сеанса отладки. Чтобы входящие подключения к этому скрипту игнорировались, добавьте скрипт menu-ajax-script.php в список пропущенных путей.
Если сценарий добавлен в Пропущенные пути, он пропускается только при запуске для него сеанса отладки. Чтобы игнорировать сценарий при пошаговом выполнении программы во время сеанса отладки, настройте пошаговый фильтр.
В диалоговом окне настроек ( Ctrl+Alt+S ) перейдите в PHP | Отладка | Пропущенные пути.