[英]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_globals
在php.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.