2016-06-10 2 views
1

Это мой тестовый скрипт:Сессия не работает в 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 
+1

_Slow down little there cowboy_ Как насчет сеансов не работает – RiggsFolly

+1

Вы уверены, что выполняете эти тесты из того же сеанса, т.е. тот же самый экземпляр браузера – RiggsFolly

+1

@RiggsFolly Я абсолютно уверен, что я просто удаляю часть '? Set' из моей адресной строки, а индекс 'var' из массива' $ _SESSION' (который должен выводиться в скрипте) уходит. '$ _SESSION' печатается как пустая. –

ответ

0

решаемая.

Кажется, весь мой счет фактически не имеет права идти вверх из папки public_html, поэтому папка /var/lib/php5 была на самом деле пытается открыть его как «относительную» папку внутри public_html. Который я наконец понял после того, как я включил error_reporting.

Итак, после того, как я создал public_html/var/lib/php5 в своем FTP-корне и сделал его доступным для записи, сеансы начали работать.

Я не думаю, что это действительно обычная среда, но с другой стороны, на этом хостинге у меня было гораздо больше вещей.

Смежные вопросы