繁体   English   中英

会话不适用于PHP

[英]Sessions don't work in PHP

这是我的测试脚本:

<?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输出1 Cookie正在成功设置。 我有一个PHPSESSID cookie集。 会话(来自phpinfo)已启用。 session_start()就在那里。

当我设置会话变量时(通过设置set GET参数),会话变量也可以直接从$_SESSION数组回显。 但是当我删除set GET参数时,print_r-ing $_SESSION输出一个空数组。

我甚至走得更远,它们甚至设置chmod 777 on /var/lib/php5 ,我chown它-ed到运行PHP相同的用户。 我甚至尝试了一个完全不同的域名,通过在我的本地/etc/hosts定义它并用它设置一个新的虚拟主机。

我发现了一个#1回答说禁用register_globalsphp.ini ,但我甚至不有我的那个设置phpinfo输出,让我没有做...

我已经尝试使用session_save_path()更改会话目录,但该DID不起作用。 我可能没有这个(VPS)托管的权限。

我不知道还能尝试什么?

这是我的phpinfo()输出的会话部分,如果它有帮助:

session
Session Support     enabled
Registered save handlers    files user
Registered serializer handlers  php php_binary wddx

Directive   Local Value Master Value
session.auto_start  Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    /dev/urandom    /dev/urandom
session.entropy_length  32  32
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  0   0
session.hash_bits_per_character 5   5
session.hash_function   0   0
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.upload_progress.cleanup On  On
session.upload_progress.enabled On  On
session.upload_progress.freq    1%  1%
session.upload_progress.min_freq    1   1
session.upload_progress.name    PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix  upload_progress_    upload_progress_
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

解决了。

看来我的整个帐户实际上没有权限从public_html文件夹上去,所以/var/lib/php5文件夹实际上是试图将它作为public_html的“relative”文件夹打开。 在我打开error_reporting后我终于意识到了这一点。

因此,在我的FTP根目录中创建了一个public_html/var/lib/php5并使其可写之后,会话就开始工作了。

我不认为这是一个真正的传统环境,但我再次在这个托管上有很多陌生的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM