我今天遇到了一个奇怪的问题。我在这里扫描了所有问题,但没有一个解决了我的问题。
当我使用session_start()
开始会话时,会创建格式为sess_xxxxxxxx
的会话文件,但会话变量不会写入文件中。
为了确保我做了一些测试,找不到任何问题。例如以下代码
<?php
$path = '/var/lib/php5/sess_aq2ctf49sa0jtplbaqqanqogt3';
foreach( array('file_exists', 'is_dir', 'is_readable', 'is_writeable') as $fn ) {
$rc = $fn($path);
echo $fn, ': ', $rc ? 'true' : 'false', "<br />\n";
}
打印
file_exists: true
is_dir: false
is_readable: true
is_writeable: true
所以我发现没有文件权限问题。但是,如果我按如下方式运行一个非常简单的脚本
<?php
session_start();
$_SESSION['test'] = "Session test";
echo $_SESSION['test'];
?>
我只获得空的会话文件
drwx-wx-wt 2 www-data www-data 40K Dec 9 04:27 .
drwxr-xr-x 38 root root 4.0K Dec 8 05:09 ..
-rw------- 1 www-data www-data 0 Dec 9 04:28 sess_4cfr69tfe3euujr70p4vuj95v7
-rw------- 1 www-data www-data 0 Dec 9 04:23 sess_aq2ctf49sa0jtplbaqqanqogt3
-rw------- 1 www-data www-data 0 Dec 9 04:27 sess_bk89n2qomkp0cmm0r901i4dqm5
-rw------- 1 www-data www-data 0 Dec 9 04:26 sess_h4vsd0nn7mpbbl539f590f0n16
-rw------- 1 www-data www-data 0 Dec 9 04:26 sess_na6cgdimp4t3sk1pu86rcu4e75
您可以在下面的php.ini中看到与会话相关的所有设置
session.save_handler = files
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 86400
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
任何帮助将不胜感激。感谢
答案 0 :(得分:-1)
尝试将目录设为您的网络服务器的所有者。
sudo chown www-data:www-data /var/lib/php5