我在会话中遇到了一个奇怪的问题。。这在我的本地机器中的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作为主机,则需要启用自动会话。按照以下步骤
- 导航到开发人员
- 点击php管理器
- 点击php变量
- 加载更多内容,直到找到session.auto_start
- 如果是,你就可以走了