CakePhp 3.x Продолжить сеанс из приложения

Я строю новая версия сайта в cakephp 3.x. Поскольку я перестраиваюсь поэтапно, мне нужно взаимодействие между частями нового сайта и старого сайта. Лучший способ сделать это на данный момент с использованием $ _SESSION.
Моя проблема в том, что часть CakePHP создает новый сеанс вместо того, чтобы использовать активный из нативной части PHP. Он пишет это рядом с ним в той же папке.

это моя настройка app.php в cakephp

 'Session' => [
'defaults' => 'php',
'timeout' => '2000',
'ini' => [
'session.cookie_domain' => '.domain.com',
'session.save_path' => '/var/www/clients/web/tmp',
'session.name' => 'PHPSESSID'
]
],

Это мои настройки php.ini

Session Support enabled
Registered save handlers    files user memcache memcached
Registered serializer handlers  php php_binary wddx

Directive   Local Value Master Value
session.auto_start  Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    /dev/urandom    /dev/urandom
session.entropy_length  32  32
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  0   0
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/www/clients/web/tmp    /var/www/clients/web/tmp
session.serialize_handler   php php
session.upload_progress.cleanup On  On
session.upload_progress.enabled On  On
session.upload_progress.freq    1%  1%
session.upload_progress.min_freq    1   1
session.upload_progress.name    PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix  upload_progress_    upload_progress_
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

0

Решение

session.name опция ini перезаписывается сессионными конфигами cookie вариант, если он установлен (который будет по умолчанию в случае, если defaults опция установлена).

По умолчанию экземпляр класса сеанса создан с помощью Session::create(), использование вашей конфигурации сеанса, а затем наследование соответствующего значения по умолчанию сеанса CakePHP в случае, если defaults Оптин используется. Все доступные значения по умолчанию определяют cookie опция, которая имеет значение CAKEPHP, php по умолчанию выглядит

'cookie' => 'CAKEPHP',
'ini' => [
'session.use_trans_sid' => 0,
]

https://github.com/cakephp/cakephp/blob/3.1.5/src/Network/Session.php#L131-L136

cookie опция, если присутствует, перезапишет session.name Ини вариант в конструктор сессионного класса, и, таким образом, ваш PHPSESSID настройка теряется, и, следовательно, существующий сеанс не будет продолжен.

Таким образом, вы можете использовать cookie вариант вместо session.name

'Session' => [
'defaults' => 'php',
'cookie' => 'PHPSESSID',
'timeout' => '2000',
'ini' => [
'session.cookie_domain' => '.domain.com',
'session.save_path' => '/var/www/clients/web/tmp'
]
],

или не наследуйте значения по умолчанию, и определите все необходимое самостоятельно

'Session' => [
'timeout' => '2000',
'ini' => [
'session.cookie_domain' => '.domain.com',
'session.save_path' => '/var/www/clients/web/tmp',
'session.name' => 'PHPSESSID',
'session.use_trans_sid' => 0
]
],
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector