我的开发和生产服务器上有以下相同的代码。它适用于开发端,但不适用于生产方:
<?php
$s = session_start();
mail('me@example.com', 'Site-test', "s=$s; SESSION=".serialize($_SESSION), "MIME...");
开发服务器显示:
s=1; SESSION=a:4:{s:20:"user_timezone_region";s:13:"Pacific/Samoa";s:4:"lang";s:1:"1";s:12:"sess_user_id";s:3:"225";s:14:"sess_user_type";s:1:"S";}
生产服务器显示:
s=1; SESSION=a:0:{}
我希望诊断的生产服务器上的PHP设置有问题。是的,这与我最近的其他两个问题相关here和here。
更多详情:
答案 0 :(得分:1)
首次启动新客户端时,该会话实际上是空的。这可能意味着在开发服务器上,您会看到一个返回客户端的会话,同时处于高效 - 首次客户端的会话。
答案 1 :(得分:0)
为什么要以这种奇怪的方式测试你的会话? 为什么不制作这么简单的剧本
<?
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Page reloaded ".$_SESSION['counter']++." times.<br>
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">reload</a>";
?>
如果它有效,你的会话就能完美运行,但传递标识符有问题 如果不是......应该有一些错误信息。