session_start()根本不设置$ _SESSION

时间:2010-09-18 11:02:57

标签: php session cpanel

我的开发和生产服务器上有以下相同的代码。它适用于开发端,但不适用于生产方:

<?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设置有问题。是的,这与我最近的其他两个问题相关herehere

更多详情:

  • 我在此服务器上运行了cPanel
  • PHP error_log没有报告上述错误(请注意变量's'为'1')
  • 第一个链接
  • 中提到了两者的phpinfo()差异

2 个答案:

答案 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>"; 
?>

如果它有效,你的会话就能完美运行,但传递标识符有问题 如果不是......应该有一些错误信息。