Wamp64 не сохраняется сеанс между страницами, каждое изменение страницы генерирует новый сеанс - PullRequest
0 голосов
/ 08 ноября 2019

Переустановка Wamp64Server3.1.0_x64 выполняется на Windows 10 Pro 10.0.18362 Build 18362 64-разрядная рабочая станция Dell по адресу c: \ wamp64 через LocalHost в качестве закрытой среды разработки php.

Все файлы php.ini в c: \ wamp64 и ниже имеют следующие настройки переменных сеанса. В этой среде разработки мы хотим, чтобы переменные сеанса сохранялись в папке c: \ wamp \ tmp как файлы SESS_, а не в файлах cookie.

[Session]
session.save_handler = files
session.save_path ="c:\wamp64\tmp" 
;(Note: if this is specified as c:/wamp64/tmp, Apache generates "can't find folder" errors.)
session.use_strict_mode = 0
session.use_cookies = 0 
;(Note: Presumably setting use_cookies to 0 causes all cookie-related variables to be ignored.)
session.use_only_cookies = 0
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

Два файла php, test1.php и test2.php,находятся в папке c: \ wamp64 \ www \ testsession:

<?php session_start(); ?>
<!doctype html>
<html lang="en">
<head>
  <title>Session Test Page 1</title>
</head>
<body>
<?php 
 echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
$_SESSION['page'] = 'Page 1';
echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
?>
<form action="page2.php">
                <input type="submit" value="Page 2">
</form>
</body>
</html>
<?php session_start(); ?>
<!doctype html>
<html lang="en">
<head>
  <title>Session Test Page 2</title>
</head>
<body>
<?php 
 echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
$_SESSION['page'] = 'Page 2';
echo session_id().'<br>'; print_r($_SESSION); echo '<br>';
?>
<form action="page1.php">
                <input type="submit" value="Page 1">
</form>
</body>
</html>

Для доступа к странице 1 открывается браузер и вводится URL-адрес «localhost / testsession / page1.php», в результате чегонепосредственно в файле sess_7dmdo58tq30mh2bf7712vecrk2 в c: \ wamp64 \ tmp и отображении страницы в браузере. Отобразятся session_id и все содержимое массива $ _SESSION, задается переменная $ _SESSION "page", а также session_id и $Снова отобразится массив _SESSION. Вывод будет выглядеть следующим образом:

7dmdo58tq30mh2bf7712vecrk2

Array ( )

7dmdo58tq30mh2bf7712vecrk2

Array ( [page] => Page 1 )

Когда нажата кнопка отправки, файл sess_bbf1umlcfkhr6cbf5038isqev4 сразу создается в c: \ wamp64 \ tmp, и следующий вывод появляется наэкран в той же вкладке браузера (отдельная вкладка не открывается):

bbf1umlcfkhr6cbf5038isqev4

Array ( )

bbf1umlcfkhr6cbf5038isqev4

Array ( [page] => Page 2 )

Обратите внимание, что session_id при отображении второй страницыотличается от session_id первой страницы, и массив $ SESSION изначально пуст, когда ему должен быть передан массив ([page] => Page 1). Очевидно, что массив пуст, потому что вторая страница выполняет сеанс, отличный от первой страницы. Другими словами, сеанс первой страницы не сохраняется на второй странице. Файлы sess содержат заданное значение $_SESSION['page'], при условии, что кнопка отправки была нажата на обеих страницах.

Такое же поведение наблюдается в нескольких браузерах: Chrome, Edge, Internet Explorer, Firefox, Avast Secure. Браузер.

Как видно из кода выше, <?php session_start(); ?> использовался религиозно в обоих php-файлах в качестве первой строки. Я искал в бесконечных сообщениях на форуме, которые настаивают, что проблема заключается в том, чтобы оставить это или неуместно. Только в одном таком сообщении решение состояло в том, чтобы служба поддержки хостинг-службы внесла изменения в конфигурацию, но следующий комментарий просто сказал: «Было бы хорошо узнать, что они изменили». Действительно !!

Поскольку эта проблема не зависит от браузера, следует сразу за переустановкой Wamp64, а код php настолько прост, я убежден, что это проблема конфигурации либо в модуле php, либо вАпачский модуль Wamp. Но я не могу найти ссылки на какие-либо настройки, которые могут вызвать такое поведение. Ни одна из предыдущих установок Wamp (а я использовал многие из них, как в среде разработки localhost, так и на живых веб-сайтах) никогда не сталкивалась с этой проблемой. Я не хочу деинсталлировать WampServer и переустанавливать его снова, если в этом нет крайней необходимости, из-за необходимости отслеживать разбросанный php.ini и другие конфигурационные файлы в установке - снова - чтобы убедиться, что многие настройки подходят для моей среды. К счастью, этого не происходит с живым сайтом.

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

1 Ответ

0 голосов
/ 08 ноября 2019

Такое поведение является результатом использования версии PHP по умолчанию для установки, 5.6.31. Переключитесь на версию 7.1.9, открыв всплывающее окно управления, наведите курсор мыши на параметр PHP, затем на параметр «Версия» и выберите параметр 7.1.9. Сервер выполнит автоматический перезапуск после внесения изменений.

...