Сессия PHP не сохраняется между страницами

Я только что купил новое пространство на сервере, и я переношу очень простое приложение PHP, которое отлично работает на моем другом сервере.

По какой-то причине данные сеанса не сохраняются в переменной $ _SESSION между страницами нового сервера. Я просмотрел эту подобную статью SO и многие другие, чтобы попытаться исправить эту проблему.

Я могу подтвердить, что:

  1. Сессионный материал отлично работает на моем другом сайте. Я просмотрел каталог, определенный session.save_path, и там есть множество файлов сеансов (на OLD-сервере).
  2. Я повторил содержимое переменной $ _SESSION в конце страницы, и она держит правильные данные, она просто не сохраняется.
  3. У меня есть echo'd session_id () для каждой страницы и получения того же вывода.
  4. Я просмотрел папку, указанную в папке session.save_path NEW сервера (/ usr / lib / php / session), и там нет никаких файлов. Я проверил разрешения, и он установлен на drwxrwx —, что должно означать, что программа php может писать на него, правильно?
  5. У меня нет файла .htaccess.
  6. Я запускаю CentOS 5.5

Это из соответствующей части вывода phpinfo ():

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.bug_compat_42 Off Off session.bug_compat_warn On On session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_lifetime 0 0 session.cookie_path / / session.cookie_secure Off Off session.entropy_file no value no value session.entropy_length 0 0 session.gc_divisor 1000 1000 session.gc_maxlifetime 1440 1440 session.gc_probability 1 1 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/php/session /var/lib/php/session session.serialize_handler php php session.use_cookies On On session.use_only_cookies Off Off session.use_trans_sid 0 0 

Я связался с хостинговой компанией, и они не будут смотреть на нее, потому что говорят, что это проблема с программным обеспечением, и это не управляемая учетная запись. Grrrrr …

Просто чтобы вы могли видеть какой-то код, который не работает, я украл код из статьи, с которой я связан:

 // info.php <? session_start(); $_SESSION['ID'] = "112233"; $_SESSION['token'] = "mytoken"; print $_SESSION['ID']; print $_SESSION['token']; ?> <a href="info2.php">info 2</a> 

и один называется info2 с этим кодом:

 // info2.php <? session_start(); print $_SESSION['ID']; print $_SESSION['token']; ?> <a href="info.php">info</a> 

результат печатает данные массива в info.php, но нет вывода в info2.php (кроме ссылки, конечно).

Большое спасибо заранее за любую помощь.

Solutions Collecting From Web of "Сессия PHP не сохраняется между страницами"

Попробуйте явно закрыть сеанс до завершения скрипта; возможно, вы видите некоторое сообщение об ошибке.

 <?php error_reporting(E_ALL); ini_set('display_errors', true); session_start(); echo '<a href="?', time(), '">refresh</a>', "\n"; echo '<pre>'; echo 'session id: ', session_id(), "\n"; $sessionfile = ini_get('session.save_path') . '/' . 'sess_'.session_id(); echo 'session file: ', $sessionfile, ' '; if ( file_exists($sessionfile) ) { echo 'size: ', filesize($sessionfile), "\n"; echo '# ', file_get_contents($sessionfile), ' #'; } else { echo ' does not exist'; } var_dump($_SESSION); echo "</pre>\n"; $_SESSION['ID'] = "112233"; $_SESSION['token'] = "mytoken"; session_write_close(); echo 'done.'; 

Если ваш файл сеанса имеет нулевой размер, убедитесь, что на вашем сервере все еще есть свободное место на диске. Это была проблема, которую я имел.

Проверьте дисковое пространство с помощью df -h на сервере linux.