php会话变量值在托管到服务器时为null


php session variable value is null when hosted to server

我在会话中遇到了一个奇怪的问题。。这在我的本地机器中的WAMP服务器中工作。。我的问题是wen托管到美国的服务器上,它不起作用。。

我是这样做的:

session_start();
$_SESSION['test'] = 'testing login..';

在我正在做的另一页中:

session_start();
echo('my session value is : '.$_SESSION['test']);

但我只得到我的会话值是:

我的会话值未设置。。

我检查了服务器的cPanel中的session.save_path,它显示/tmp。

请帮忙。。提前谢谢。

也许您的脚本会因为session_start失败而导致"头已经发送"?例如,如果您的测试机和生产服务器没有以相同的方式对新行进行编码,则可能会发生这种情况。。。

错误可能不会显示在您的生产服务器上,请尝试类似的操作:

ini_set('display_errors', 1);
session_start();

看看你是否得到了有用的东西。

php打开标记必须写在php文件的第一行。这个方法帮助我解决了这个问题。

检查session.save_path的权限。此位置需要可由Apache/httpd用户写入。

还要检查session.save_path是否包含任何以sess_为前缀的文件。

感谢您的帮助。

我的问题是/tmp文件夹中的安全权限。一旦它纠正了,它就起作用了。

平均时间不要只对SESSION ID使用数字(例如$_SESSION['12345']),因为在托管的linux中,它不会只使用数字索引并跳过它。(因此使用$_SESSION[ACS12345'])。。

看看您创建文件的方式。

如果您使用了自动语言检测功能或类似功能来创建文件,请尝试创建一个新的PHP文件。复制您的代码,然后重试。

如果您使用siteground作为主机,则需要启用自动会话。按照以下步骤

  1. 导航到开发人员
  2. 点击php管理器
  3. 点击php变量
  4. 加载更多内容,直到找到session.auto_start
  5. 如果是,你就可以走了