PHP会话在docker上不起作用。

3
我正在尝试设置一个PHP应用程序,但是似乎会话处理出现了问题。

Here's my <code>php.ini</code> session settings (run fro container level)

正文翻译:如您所见,该配置相当标准。我从容器中检查了/tmp的权限,并获得了。
注:原文中的是表示代码块的标记,在翻译中可不翻译,直接翻译出代码内容即可。
root@2217e6d458ad:/# ls -ld /tmp
drwxrwxrwt 1 root root 4096 Dec 28 08:03 /tmp

我也在运行时检查了以下代码片段:
$file = fopen('/tmp/foo.log', 'w');
fwrite($file, 'test'.PHP_EOL);
fclose($file);
echo 'path: '. session_save_path().'<br>';
var_dump(is_writable(session_save_path()));

现在,文件 /tmp/foo.log 已创建,路径为空,但 var_dump 的结果为 bool(false)

我还应该检查什么?


1
会话保存路径在php配置中没有值。 - undefined
4
session_save_path() being blank means default to /tmp, BUT your check of is_writable() is checking blank and not /tmp - undefined
你能否提供一些代码示例来展示你的会话处理出现了什么问题? - undefined
@NigelRen 实际上,在你的第一条评论之后,我准备了一个非常简单的代码片段来检查会话,看起来它是有效的 - 问题可能出现在应用程序层面... - undefined
2个回答

0

这个情况和我一样,我已经解决了,并且我使用了Bitnami仓库的CodeIgniter镜像

如果你和我一样,你可以在dockerfile中添加那个命令

RUN echo "session.save_path=\"/tmp\"" >> /opt/bitnami/php/lib/php.ini

或者可以在 PHP 容器内核终端上输入

#$ echo "session.save_path=\"/tmp\"" >> /opt/bitnami/php/lib/php.ini

/opt/bitnami/php/lib/php.ini 是 PHP 配置文件夹,您可以在浏览器上运行并检查 whereis php.ini 文件。

<?php phpinfo() ?>

你可以在https://hub.docker.com/r/ranur/codeigniter上检查并运行我的镜像。


0
在我的情况下(使用wordpress:php7.4-fpm),我还需要设置session.auto_start = On,以使会话开始工作,尽管我按照规定在每个脚本的顶部调用了session_start()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接