Я только что купил новое пространство на сервере, и я переношу очень простое приложение PHP, которое отлично работает на моем другом сервере.
По какой-то причине данные сеанса не сохраняются в переменной $ _SESSION между страницами нового сервера. Я просмотрел эту подобную статью SO и многие другие, чтобы попытаться исправить эту проблему.
Я могу подтвердить, что:
Это из соответствующей части вывода 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 (кроме ссылки, конечно).
Большое спасибо заранее за любую помощь.
Попробуйте явно закрыть сеанс до завершения скрипта; возможно, вы видите некоторое сообщение об ошибке.
<?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.