我正在尝试在部署到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/
有人知道为什么立即删除会话文件吗?