Сессия PHP не работает

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

================================================== =============================

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

<?php session_start(); print_r($_SESSION); if(isset($_SESSION['views'])){ $_SESSION['views'] = $_SESSION['views']+ 1; } else{ $_SESSION['views'] = 1; } echo "views = ". $_SESSION['views']; echo '<p><a href="">Refresh</a></p>'; # for testing var_dump($_SESSION); ?> 

Случается, что var_dump показывает, что сеанс создается с ключом представлений и значением 1. Однако при обновлении страницы активный сеанс не найден, а ключ вида снова установлен на 1.

Теперь мне кажется странным, что есть идентификатор сеанса, созданный в соответствии с PHPSESSID. Я попытался проверить, доступен ли путь для хранения сессий, и он есть. Заголовки, возвращенные страницей, выглядят следующим образом:

 Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public Connection close Content-Encoding gzip Content-Length 68 Content-Type text/html; charset=utf-8 Date Wed, 18 Jan 2012 13:03:34 GMT Expires Thu, 19 Nov 1981 08:52:00 GMT Pragma no-cache Server Apache Vary Accept-Encoding X-UA-Compatible IE=Edge,chrome=1 

И в заголовке запроса файл cookie сеанса отправляется следующим образом:

  Cookie PHPSESSID=0e1416r7pun3pamvc7cp8mjat3 

Я не уверен, что там что-то не так. Я запускаю это на Amazon EC2 linux AMI.

Я также включу phpinfo ():

 PHP Version 5.3.6 System Linux ip-**-**-**-** *.*.**.**-**.**.amzn1.x86_64 #1 SMP Sat Feb 19 23:42:04 UTC 2011 x86_64 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.bug_compat_42 Off Off session.bug_compat_warn Off Off session.cache_expire 180 180 session.cache_limiter nocache nocache session.cookie_domain no value no value session.cookie_httponly On Off 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 On On session.use_trans_sid 0 0 

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

Вы должны проверить session.use_cookies в файле php.ini.

В заголовках ответа нет COOKIE.

session.use_cookies должны быть равны 1.

Проверьте, изменяется ли идентификатор сеанса (с session_id ()). Кроме того, вы можете сокращать строку:

 $_SESSION['views'] = $_SESSION['views']+ 1; 

С

 $_SESSION['views'] += 1; 

Когда вы создаете ссылку на ту же страницу, на которой вы находитесь, вся страница не обновляется. Вам нужно будет сделать это через JavaScript.

В HTML (или эхом PHP):

 <button type='button' onclick='refreshPage()'>Refresh</button> 

Теперь установите функцию в JavaScript:

 function refreshPage(){ document.location.reload(true); } 

Когда JavaScript выполнит это, вся страница обновится, и все строки PHP будут снова запущены.

Другой способ попробовать это – связать с другой страницей и вернуться к первой странице, затем снова загрузится и вся страница.