1

代码

<?php
session_start();
var_dump($_SESSION);
$_SESSION['test'] = 5;

输出

array(0) { }

phpinfo()

Session Support enabled
Registered save handlers    files user mm
Registered serializer handlers  php php_binary

Directive   Local Value Master Value
session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly On  On
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    /dev/urandom    /dev/urandom
session.entropy_length  16  16
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   1   1
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/lib/php5   /var/lib/php5
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

也是/tmp可写的:

# ls -la /tmp/
drwxrwxrwt 22 root    root        4096 Aug 26 09:44 .

对此有什么想法吗?

4

3 回答 3

1

如果您的会话似乎没有开始,您可以做两件事:

  1. session_start()检查;的返回值 false如果出现错误,它将返回。

  2. 显示通知和警告:

    error_reporting(-1); 
    ini_set('display_errors', 'On');
    

    在实时服务器上,您可能希望使用它error_log

  3. 通过 cookie 或通过查询字符串传递会话 id(不推荐)检查会话是否正确永久化。

于 2013-08-26T08:04:09.573 回答
1

为了测试您的示例,您必须在 2 次运行此文件!一个用于填充会话变量,下一次用于打印会话数组。所以看看下面的例子:

<?php
session_start();

$_SESSION['test'] = 5;
var_dump($_SESSION);
于 2013-08-26T08:10:27.483 回答
0

session.save_path不是!/var/lib/php5_/tmp

$ sudo chmod 777 /var/lib/php5
$ sudo rm /var/lib/php5/*

会话再次开始工作。

杰克是对的:不要将 777 用于会话文件!

$ sudo chown wwwrun:www /var/lib/php5
$ sudo chmod 700 /var/lib/php5
于 2013-08-26T08:00:01.993 回答