这是我的测试脚本:
getData
<?php
ob_start(); // with or without this is the same
$session = session_start();
$path = session_save_path();
if (headers_sent()) die ("Headers have already been sent");
if((isset($_GET["set"]))) {
$_SESSION["var"] = " - testing - ";
}
echo $_SESSION["var"];
echo $session;
echo $path;
print_r($_SESSION);
print_r($_COOKIE);
setcookie("cookie", "value");
输出$session
。 Cookie正在成功设置。我有一个PHPSESSID cookie集。会话(来自phpinfo)已启用。 1
就在那里。
当我设置会话变量时(通过设置session_start()
GET参数),会话变量也会直接从set
数组回显。但是当我删除$_SESSION
GET参数时,print_r-ing set
会输出一个空数组。
我甚至设置$_SESSION
,我chmod 777 on /var/lib/php5
- 将它编辑到运行PHP的同一用户。我甚至尝试了一个完全不同的域名,在我的本地chown
中定义它并用它设置一个新的虚拟主机。
我在Stackoverflow上找到一个答案,表示要在/etc/hosts
中禁用register_globals
,但我在php.ini
输出中甚至没有这个设置,所以我没有&# 39; t do ...
我已尝试使用phpinfo
更改会话目录,但是DIDN&#39; T WORK。我可能没有这个(VPS)托管的权限。
我不知道还有什么可以尝试的?
这是我的phpinfo()输出的会话部分,如果它有帮助:
session_save_path()
答案 0 :(得分:0)
解决。
似乎我的整个帐户实际上没有权限从public_html
文件夹上升,因此/var/lib/php5
文件夹实际上是在public_html
文件夹中将其作为“相对”文件夹打开1}}。在我打开error_reporting
后我终于意识到了这一点。
因此,在我的FTP根目录中创建public_html/var/lib/php5
并使其可写后,会话开始工作。
我认为这不是一个真正的传统环境,但我再次在这个主机上做了很多陌生的事情。