0

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

<?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 设置有问题。是的,这与我最近在这里这里的另外两个问题有关。

更多细节:

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

2 回答 2

1

首次为新客户端启动的会话实际上是空的。这可能意味着在开发服务器上,您会看到返回客户端的会话,而在生产服务器上,您会看到第一次客户端的会话。

于 2010-09-18T11:09:44.703 回答
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>"; 
?>

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

于 2010-09-18T11:33:30.660 回答