Minishift / Docker上的PHP会话(会话文件消失)

时间:2018-11-12 14:12:01

标签: php apache docker ubuntu openshift

我正在尝试在部署到minishift的docker映像中运行PHP应用程序。 我可以将图像部署到minishift并创建在我的浏览器中访问它的路径没有问题。

该应用程序正在使用php会话,该会话在“普通”安装(带有ubuntu和nginx / php-fpm或Apache + PHP的VM)上可以很好地工作。我尝试使用ubuntu:16.04作为安装了Apache2和PHP的已安装软件包(包括libapache2-mod-php等)的基础将设置复制到Dockerfile。

问题如下:在php.ini中,我设置了session.save_path = /tmp/,根据phpinfo()session_save_path(),它得到应用并且似乎起作用。但是,当我加载Web应用程序的新页面时,似乎总是得到一个空的$_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/

有人知道为什么立即删除会话文件吗?

0 个答案:

没有答案