Я строю новая версия сайта в 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
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
]
],
Других решений пока нет …