会话变量不是保存在主机上,而是保存在php的localhost中


Session variable not saving on hosting but in localhost in php

我正在尝试在网络中添加多语言,但我有一个会话变量的问题。

我有这个:

session_start();
$lang = $_SESSION['lang'];
echo $_SESSION['lang'];
$languages = array('es', 'en');
if(in_array($_GET['lang'], $languages)){
$_SESSION['lang']=$_GET['lang'];
$lang = $_SESSION['lang'];
echo $lang;
}
include("translations/lang.php");

更改语言的链接:

<li><a href="?lang=es">Español</a></li>
<li><a href="?lang=en">Ingles</a></li>

当我点击其中一个链接$lang变量存储$_SESSION['lang'],即= $_GET['lang']它在本地主机(Wamp)上工作,但当我把它放在主机上时,它不工作,当改变到网络内的其他页面$_SESSION['lang']消失。

你能帮我一下吗?

它不工作时,改变到其他网页内的网页$ _SESSION("郎")消失了

你确定你正在使用:

session_start();

在你所有的页面?

我以前遇到过类似的情况,我能够通过从我的托管服务面板(CPanel)更改PHP版本来修复它。

在我的例子中,默认的PHP版本设置为7.4(本机)。在将PHP版本更改为7.2之后,我能够保存会话变量。我还尝试将PHP版本更改为7.4(没有括号&;native&;,因为我的托管服务提供了PHP 7.4的两个变体),问题没有返回。

可能是PHP的默认版本权限导致了这个问题