Мой хост-провайдер обновил PHP 5.6 до PHP 7.2, и я заметил, что переменные сеанса теряются после перезагрузки страницы. Я переписал вопрос на основе текущего тестирования, чтобы предоставить соответствующую информацию.
По сути, я храню ключи поиска, количество строк на странице и другие данные в переменных сеанса, и они определяются при перенаправлении на нумерацию страниц.Однако, когда я нажимаю на любые ссылки на страницы - переменные сеанса теряют свои значения, простыми словами - когда-то сеансы pagination.php перестают работать.Перейти на страницу pagination.php можно либо нажав ссылку на категорию (href), либо введя поисковый запрос и отправив форму.
Вот соответствующие части кода, например, форма поиска надомашняя страница:
session_start();
//ini_set('session.save_path', '/tmp');
//phpinfo();
//echo "path" . session_save_path();
//if (!session_start()) echo "Session not started";
echo "header session status= " . session_status();
echo "header session_id= " . session_id();
unset($_SESSION['zip']);
unset($_SESSION['keywords']);
unset($_SESSION['key1']);
unset($_SESSION['key2']);
?>
<div id="searchBox">
<form action="<?php echo $forsaleurl;?>customer/pagination.php" method="post" class="searchform">
<input name="searchstring" class="textbox" type="text" placeholder="search string" value="" required/>
<input name="postcode" class="textbox" type="text" placeholder="postcode (optional)" value=""/>
<input name="submit" class="submit" value="Search" type="submit" />
</form>
</div>
Когда сайт загружен, session_status = 2 и session_id имеет значение.
Это начало pagination.php, который создает и отображает ссылки на страницы:
<?php
include '../config.php';
if ($DEBUG > 0)
{
error_reporting(E_ALL); ini_set('display_errors', 'On');
}
echo "page session status= " . session_status();
echo "page session_id" . session_id();
Это будет отображать session_status = 1 и пустое значение session_id, как только вы попадете сюда.
Это первая часть config.php, которая начинает сеанс:
<?php
ob_start();
error_reporting(E_ERROR); ini_set('display_errors', 'On');
//ini_set('session.save_path', '/tmp');
//phpinfo();
echo "path" . session_save_path();
if (!session_id()) session_start();
print_r($_SESSION);
//session_start();
echo session_status();
echo "session_id" . session_id();
Это покажет переменные session_status, session_id и сеанса при загрузке сайта, но не после того, как вы перейдете к нумерации страниц.
Я пытался использовать относительный URL-адрес в действии формы, но это не помогло.
Файлы сессий содержат либо перенаправления на / или на index.php, либо на ссылки, которые я НЕ посещал (???).
URL сайта: https://themarket.onl.
Имееткто-нибудь сталкивался с этой проблемой послеupgrade? До этого сайт полностью работал, и в код не было внесено никаких изменений.
Вот частичный дамп phpinfo (), не уверенный, что session.save_path не должен быть пустым,но, похоже, работает, и локальный php.ini не может изменить значение.
Session Support enabled
Registered save handlers files user
Registered serializer handlers php_serialize 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 no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.lazy_write On On
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.sid_bits_per_character 4 4
session.sid_length 32 32
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 1 1
session.use_only_cookies 1 1
session.use_strict_mode 0 0
session.use_trans_sid 0 0
/ tmp имеет права drwxr-xr-x.