Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话id在页面之间或刷新页面时发生更改_Php_Session - Fatal编程技术网

PHP会话id在页面之间或刷新页面时发生更改

PHP会话id在页面之间或刷新页面时发生更改,php,session,Php,Session,问题是,每次刷新页面或将页面更改为另一个页面时,会话id都会更改,并在会话保存路径中创建新的会话文件。 以下是我的代码的初始部分: <?php session_start(); echo session_id(); ... ?> 显然,会话变量(这是我需要的)不起作用 奇怪的是,该页面在localhost上运行良好,但在服务器上尝试时却无法运行 提前感谢。在您的服务器上,在php.ini中检查TTL以获取cookies会话。cookie_lifetime

问题是,每次刷新页面或将页面更改为另一个页面时,会话id都会更改,并在会话保存路径中创建新的会话文件。 以下是我的代码的初始部分:

<?php
    session_start();
    echo session_id();
    ...
?>

显然,会话变量(这是我需要的)不起作用

奇怪的是,该页面在localhost上运行良好,但在服务器上尝试时却无法运行


提前感谢。

在您的服务器上,在
php.ini
中检查TTL以获取cookies<代码>会话。cookie_lifetime定义cookie将持续多长时间(默认值为0,这意味着直到浏览器关闭)和
会话。gc_maxlifetime
定义删除数据之前的多长时间,也以秒为单位


并确保会话文件未存储在
/tmp
文件夹中。

看起来包含会话的目录不可写

这就是为什么php每次都会生成一个新的会话文件。
检查您的chmod for sessions文件夹。

在服务器中检查此设置:
session.auto\u start

这将导致在每个页面中自动启动会话,无论您是否调用
session\u start()


在会话开始之前,确保没有幻影
CRLFs
或类似的东西。在生产环境中,错误报告可以关闭,因此可能不会被捕获,但会话可能会发现难以写入。这有时会导致这种情况。

在每页上都会调用Check
session\u start()
。从这里我们看不到。还可以使用
{}
按钮设置代码样式。每个页面都会调用session_start()。(感谢{}的建议)我正在使用“is_writable(session_save_path())”来检查它。是的,它是可写的。
session.cookie\u life
值为0,而
session.gc\u maxlife
值为1440。此外,会话文件存储在我创建的非临时文件夹中。用于获取cookie参数,并查看
安全
httponly
下的一切是否正常。我的index.php上有幻影CRLF。移除它们解决了mi问题。谢谢