Это мой тестовый скрипт:Сессия не работает в 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 устанавливаются успешно. У меня есть набор файлов cookie PHPSESSID. Сеансы (из phpinfo) включены. session_start()
есть.
Когда я устанавливаю переменную сеанса (устанавливая параметр GET set
), тогда переменная сеанса успешно эхосигнала также непосредственно из массива $_SESSION
. Но когда я удаляю параметр GET set
, print_r-ing $_SESSION
выводит пустой массив.
Я даже зашел так далеко, что установил chmod 777 on /var/lib/php5
, а I chown
- отправил его тому же пользователю, который запускает PHP. Я даже попробовал совершенно другое доменное имя, определив его в своем локальном /etc/hosts
и установив с ним новый виртуальный хост.
Я нашел один ответ на Stackoverflow, который сказал, чтобы отключить register_globals
в php.ini
, но я даже не имею такую настройку в моем phpinfo
выходе, так что я не делал ...
Я пробовал изменение каталога сеанса с session_save_path()
, но это НЕ РАБОТАЕТ. У меня может не быть привилегий для этого на этом (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
_Slow down little there cowboy_ Как насчет сеансов не работает – RiggsFolly
Вы уверены, что выполняете эти тесты из того же сеанса, т.е. тот же самый экземпляр браузера – RiggsFolly
@RiggsFolly Я абсолютно уверен, что я просто удаляю часть '? Set' из моей адресной строки, а индекс 'var' из массива' $ _SESSION' (который должен выводиться в скрипте) уходит. '$ _SESSION' печатается как пустая. –