Сессионный cookie не установлен - PullRequest
0 голосов
/ 09 июля 2019

не может заставить $ _SESSION php работать на моей локальной машине

он отлично работает на живом сервере, но не работает на локальной машине

Я пытался с Apache иphp на windows, apache и php на mac и apache и php на debian, ни один из них не работает (мой живой сервер также работает под управлением Debian 9, тот же, который я пробовал локально)

в инструментах разработчика firefox> сеть> заголовки я вижу, что php отправляет set-cookie, но по какой-то причине он не устанавливается (нет файлов cookie в хранилище> cookie, и мой сценарий не работает так, как должно быть при установке cookie)

я не использую ssl / https, и я установил "session.cookie_secure = 0 and off", но по какой-то причине так выглядит заголовок set-cookie: "Set-Cookie: PHPSESSID = XXXXX; path = /; HttpOnly; Secure ", я не думаю, что php должен устанавливать флаг Secure, поскольку я явно отключил его в php.ini?

и да, каждый файл, который использует функциональность сеанса, содержит session_start () в нем

нет никаких ошибок apache / php, у меня даже включен xdebug

протестирован с использованиемlocalhost, 127.0.0.1, 10.0.0.10 (мой локальный ip) и пользовательское имя хоста, ни один не работает

У меня нет идей, я попробовал все, что мог придумать

, работает вживуюСервер Debian 9 с php 7.2 и конфигурацией по умолчанию

не работает на локальном сервере Debian 9 с php 7.2 и конфигурацией по умолчанию

не работает на окнах с теми же версиями apache / php

не работает на Mac с apache 2.4 и php 7.3, даже с параметром session.cookie_secure = 0 установлено

проверено на наличие ошибок apache и php, нет ни одного

использовал инструменты разработчика firefox, чтобы увидеть заголовки / файлы cookie

проверил мой код и удостоверился, что он имеет session_start (), а все остальное правильно

я даже пытался вручную установить cookie с флагом безопасностиустановлен на false и снова "Secure" устанавливается в заголовке Set-Cookie, это был код:

setcookie("PHPSESSID", "7nhqdim7uu2viae7vhhf9os5ue", 0, "/", "", false, false);

и вот код, который я использую для тестирования:

<?php
session_start();

var_dump($_SESSION);

if(isset($_POST['submit']))
{
  $_SESSION['value'] = $_POST['example'];
  header('Location: /session.php'); // session.php is this file
}

if(isset($_SESSION['value']) && $_SESSION['value'] == 'example')
{
  echo "value is " . $_SESSION['value'] . '<br>';
}
?>
<form method="post">
  <input type="text" name="example" value="example">
  <input type="submit" name="submit" value="submit">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...