我正在尝试设置 PHP 应用程序,但会话处理似乎出现问题。
如您所见,配置非常标准。我检查了容器的
/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
已创建,path
为空,但var_dump
结果为bool(false)
。
我还应该检查什么??
这个情况与我相同,我确实解决了这个问题 我使用了 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配置文件夹,可以在浏览器上运行查看php.ini文件在哪里
<?php phpinfo() ?>
您可以检查并运行我的图像 https://hub.docker.com/r/ranur/codeigniter
在我的例子中(使用
wordpress:php7.4-fpm
)我还需要设置session.auto_start = On
以使会话开始工作,尽管像你应该的那样在每个脚本的最顶部调用session_start()
。