Чтобы объяснить мою проблему, я должен добавить некоторую контекстную информацию:
У нас есть веб-сайт, он работает с сессиями и работает в течение 7 лет без проблем, за исключением нашегоадминистратор сервера, он не может войти в систему, и мы никогда не знали, почему ... до сих пор ...
Наш администратор сервера находится в отпуске, поэтому мне пришлось сделать некоторые из его работ, в том числе вход в систему на ISP Configкоторый расположен на том же сервере и в домене с использованием другого порта (8080), я зарегистрировался там, чтобы проверить некоторые значения, а затем, когда я возвращаюсь на наш веб-сайт, я не мог войти, как администратор нашего сервера.
Выполняя некоторую отладку, я обнаружил, что это проблема с сессиями, при каждом обновлении session_id()
изменения.
с использованием ini_get
Я получил session.cookie_domain
и session.cookie_secure
пустые.
Если я сделаю print_r($_COOKIE)
, то PHPSESSID
не будет, если я установлю его на любое значение, оно исчезнет, даже если я запишу длинный срок действия. Оно не сохраняется, если я установлю 2 куки, как это:
setcookie("PHPSESSID", "MYSESSION", time()+365*24*60*60, '/');
setcookie("a", "b", time()+365*24*60*60, '/');
и затем print_r($_COOKIE);
Я получаю это:
Array ( [a] => b )
Я делаюУ меня нет .htaccess, поэтому у меня нет правил, похоже, что в конфигурации ISP что-то изменило способ хранения файлов cookie.
Я мог бы спросить на webmasters.stackexchange.com, но янужен ответ PHP, чтобы установить новые значения, когда кто-то входит в мой сайт после входа в конфигурацию ISP.
Это мой текущий код для тестирования:
<code><?php
session_set_cookie_params(3600,"/");
session_start();
//$_SESSION[b_id]=1;
setcookie("PHPSESSID", "GTS", time()+365*24*60*60, '/');
setcookie("a", "b", time()+365*24*60*60, '/');
echo "<div>b_id: $_SESSION[b_id]</div>";
echo "<div>session_id: ".session_id()."</div>";
echo "<div>cookie_domain: ".ini_get('session.cookie_domain')."</div>";
echo "<div>save_path: ".ini_get('session.save_path')."</div>";
echo "<div>cookie_secure: ".ini_get('session.cookie_secure')."</div>";
print_r($_COOKIE);
/*echo "<pre>";
print_r(ini_get_all());
echo "
"; */?>
Это вывод, (значение session_id меняется каждый раз):
b_id:
session_id: du95eljbkct54qktvcd18a7ej0
cookie_domain:
save_path: /var/lib/php/sessions
cookie_secure:
Array ( [a] => b )
Это вывод ini_get_all()
function:
[session.auto_start] => Array (
[global_value] => 0
[local_value] => 0
[access] => 2
)
[session.cache_expire] => Array (
[global_value] => 180
[local_value] => 180
[access] => 7
)
[session.cache_limiter] => Array (
[global_value] => nocache
[local_value] => nocache
[access] => 7
)
[session.cookie_domain] => Array (
[global_value] =>
[local_value] =>
[access] => 7
)
[session.cookie_httponly] => Array (
[global_value] =>
[local_value] =>
[access] => 7
)
[session.cookie_lifetime] => Array (
[global_value] => 0
[local_value] => 3600
[access] => 7
)
[session.cookie_path] => Array (
[global_value] => /
[local_value] => /
[access] => 7
)
[session.cookie_secure] => Array (
[global_value] =>
[local_value] =>
[access] => 7
)
[session.entropy_file] => Array (
[global_value] => /dev/urandom
[local_value] => /dev/urandom
[access] => 7
)
[session.entropy_length] => Array (
[global_value] => 32
[local_value] => 32
[access] => 7
)
[session.gc_divisor] => Array (
[global_value] => 1000
[local_value] => 1000
[access] => 7
)
[session.gc_maxlifetime] => Array (
[global_value] => 1440
[local_value] => 1440
[access] => 7
)
[session.gc_probability] => Array (
[global_value] => 0
[local_value] => 0
[access] => 7
)
[session.hash_bits_per_character] => Array (
[global_value] => 5
[local_value] => 5
[access] => 7
)
[session.hash_function] => Array (
[global_value] => 0
[local_value] => 0
[access] => 7
)
[session.lazy_write] => Array (
[global_value] => 1
[local_value] => 1
[access] => 7
)
[session.name] => Array (
[global_value] => PHPSESSID
[local_value] => PHPSESSID
[access] => 7
)
[session.referer_check] => Array (
[global_value] =>
[local_value] =>
[access] => 7
)
[session.save_handler] => Array (
[global_value] => files
[local_value] => files
[access] => 7
)
[session.save_path] => Array (
[global_value] => /var/lib/php/sessions
[local_value] => /var/lib/php/sessions
[access] => 7
)
[session.serialize_handler] => Array (
[global_value] => php
[local_value] => php
[access] => 7
)
[session.upload_progress.cleanup] => Array (
[global_value] => 1
[local_value] => 1
[access] => 2
)
[session.upload_progress.enabled] => Array (
[global_value] => 1
[local_value] => 1
[access] => 2
)
[session.upload_progress.freq] => Array (
[global_value] => 1%
[local_value] => 1%
[access] => 2
)
[session.upload_progress.min_freq] => Array (
[global_value] => 1
[local_value] => 1
[access] => 2
)
[session.upload_progress.name] => Array (
[global_value] => PHP_SESSION_UPLOAD_PROGRESS
[local_value] => PHP_SESSION_UPLOAD_PROGRESS
[access] => 2
)
[session.upload_progress.prefix] => Array (
[global_value] => upload_progress_
[local_value] => upload_progress_
[access] => 2
)
[session.use_cookies] => Array (
[global_value] => 1
[local_value] => 1
[access] => 7
)
[session.use_only_cookies] => Array (
[global_value] => 1
[local_value] => 1
[access] => 7
)
[session.use_strict_mode] => Array (
[global_value] => 0
[local_value] => 0
[access] => 7
)
[session.use_trans_sid] => Array (
[global_value] => 0
[local_value] => 0
[access] => 7
)
[session.cookie_domain] => Array (
[global_value] =>
[local_value] =>
[access] => 7
)
[session.cookie_httponly] => Array (
[global_value] =>
[local_value] =>
[access] => 7
)
[session.cookie_lifetime] => Array (
[global_value] => 0
[local_value] => 3600
[access] => 7
)
[session.cookie_path] => Array (
[global_value] => /
[local_value] => /
[access] => 7
)
[session.cookie_secure] => Array (
[global_value] =>
[local_value] =>
[access] => 7
)
Как вернуться к моей сеансовой системе по умолчанию, как до входа в конфигурацию ISP?
Ответы на вопросы Ильи Бурсова
Открытие страницы в режиме инкогнито позволяет мне войти в систему нормально, и PHPSESSID не меняется.
Очистка файлов cookie не работает, PHPSESSID все еще меняется.
phpinfo дал мне несколько актуальныхинформация:
Set-Cookie: PHPSESSID=ositfoouhvosgcklk2k14r7t25; expires=Fri, 07-Dec-2018 19:28:01 GMT; Max-Age=3600; path=/
// This is the same time it was created, so it is creating and expiring inmediately!
Expires: Thu, 19 Nov 1981 08:52:00 GMT
// 1981!?
У меня есть сотрудник (в той же сети), который может войти на мой сайт.
Через 2 дня я не могу решить проблему, сегодня мы провели новый тест, чтобы воспроизвести эту ошибку, наш веб-разработчик вошел в систему ISP Config, и теперь он не может войти в системумоя система !!
Та же ошибка, что и у меня и у нашего администратора сервера.
Я использую Chrome в Windows 10.
ISP Config версия 3.1.11
Кажется, у этого парня была такая же проблема 6 лет назад: PHPSESSID не сохраняется в cookie