【发布时间】:2011-05-09 12:40:09
【问题描述】:
我的开发和生产服务器上有以下相同的代码。它适用于开发端,但不适用于生产端:
<?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有关。
更多细节:
- 我在这台服务器上运行了 cPanel
- PHP error_log 没有报告上面的错误(注意变量's'是'1')
- 第一个链接中提到了两者在phpinfo()中的区别
【问题讨论】:
-
只是一个小的健全性检查:似乎您的开发服务器上的 $_SESSION 已在其他地方填充。您在生产中也这样做吗?
-
在请求之间检查从生产服务器设置的会话 cookie 的 ID。您很可能会看到它在请求之间发生变化,表明正在创建一个全新的(空白)会话。