Сессии PHP в Minishift / Docker (файл сессии исчезает) - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь запустить приложение PHP в образе докера, развернутого в минишифте.У меня нет проблем с развертыванием образа в minishift и созданием маршрута для доступа к нему в моем браузере.

Приложение использует сеансы php, которые отлично работают на «обычной» установке (ВМ с ubuntuи nginx / php-fpm или Apache + PHP).Я попытался скопировать настройки в Dockerfile, используя ubuntu: 16.04 в качестве базы с установленными пакетами для Apache2 и PHP (включая libapache2-mod-php и другие).

Проблема в следующем: в php.ini, я установил session.save_path = /tmp/, который, согласно phpinfo() и session_save_path(), применяется и, кажется, работает.Однако, когда я загружаю новую страницу своего веб-приложения, я всегда получаю пустую $_SESSION.

Я попытался отладить это, и мне было интересно, что в /tmp/ не было абсолютно никакого файла.Используя inotifywait, я обнаружил, что файлы сеансов создаются и сохраняются, но также мгновенно удаляются:

$ inotifywait -m /tmp/
Setting up watches.
Watches established.
/tmp/ CREATE sess_h5eteih0jlcmbnavo7fstget21
/tmp/ OPEN sess_h5eteih0jlcmbnavo7fstget21
/tmp/ MODIFY sess_h5eteih0jlcmbnavo7fstget21
/tmp/ CLOSE_WRITE,CLOSE sess_h5eteih0jlcmbnavo7fstget21
/tmp/ OPEN sess_h5eteih0jlcmbnavo7fstget21
/tmp/ ACCESS sess_h5eteih0jlcmbnavo7fstget21
/tmp/ CLOSE_WRITE,CLOSE sess_h5eteih0jlcmbnavo7fstget21
/tmp/ DELETE sess_h5eteih0jlcmbnavo7fstget21

То же самое происходит, когда я не использую /tmp/, но другой каталог.Мне было интересно, что вызывает удаление файла сеанса.

Это параметры в моем php.ini:

[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
session.save_path = /tmp/

Кто-нибудь знает, почему файлы сеанса удаляются мгновенно?

...