Почему могли сдохнуть сессии? (PHP)
4133
7
PerS
v.i.p.
У людей вдруг "перестал работать сайт" на PHP без MySQL. Просят помочь.
100% чего-т поменял хостер и 100% - что не признается... к тому ж, на этом славном нском хостинге сидят полные ***.
Как смотрел:
Вводим неправильные логин с паролем - как положено, сообщение от движка. Вводим правильные - ничего, т.е., reload главной страницы с пустой формой входа, будто не пытались войти. Ставим ошибки в E_ALL - пусто. Логов на хосте нет, тока ftp.
Пробуем регистриться - всегда "неправильный код сообщения". Дело в том, что только он передается через $_SESSION. И потому же не входим при правильном логине с паролем.
Вот соответствующий код:
Через $_POST передается что надо, а $_SESSION['antibot'] всегда пуст. Получен он был в другом файле так:
$content правильный, отображается тоже правильно.
Так уже не пишут, но и версия PHP-то какая (см. ниже).
Все права и проч. правильные.
Настройки хостера:
Может есть опытный человек - куда курить? Вроде всё, что знаю о PHP, попробовал - не помогло. Для сравнения - тот же движок прекрасно работает у того же хостера на другом серваке с такими настройками:
Естессна, это другой домен и другой владелец, но сайт отличается лишь оформлением.
100% чего-т поменял хостер и 100% - что не признается... к тому ж, на этом славном нском хостинге сидят полные ***.
Как смотрел:
Вводим неправильные логин с паролем - как положено, сообщение от движка. Вводим правильные - ничего, т.е., reload главной страницы с пустой формой входа, будто не пытались войти. Ставим ошибки в E_ALL - пусто. Логов на хосте нет, тока ftp.
Пробуем регистриться - всегда "неправильный код сообщения". Дело в том, что только он передается через $_SESSION. И потому же не входим при правильном логине с паролем.
Вот соответствующий код:
$antibot_input = $_POST['antibot_input'];
session_start();
session_register("antibot");
$antibot_code = $_SESSION['antibot'];
if(strtolower($antibot_input) != strtolower($antibot_code)) { $er[] = "Введен неправильный код"; }
Через $_POST передается что надо, а $_SESSION['antibot'] всегда пуст. Получен он был в другом файле так:
session_start();
session_register("antibot");
$_SESSION['antibot'] = $content;
$content правильный, отображается тоже правильно.
Так уже не пишут, но и версия PHP-то какая (см. ниже).
Все права и проч. правильные.
Настройки хостера:
PHP Version 4.3.11
Session Support enabled
Registered save handlers files user
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 120 120
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 12 12
session.gc_divisor 1000 1000
session.gc_maxlifetime 360 360
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off
Может есть опытный человек - куда курить? Вроде всё, что знаю о PHP, попробовал - не помогло. Для сравнения - тот же движок прекрасно работает у того же хостера на другом серваке с такими настройками:
PHP Version 5.2.9
Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off 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 /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0
Естессна, это другой домен и другой владелец, но сайт отличается лишь оформлением.
Спасибо, что открыли для меня новое в PHP.
Интересно, как только эти скрипты работали столько лет на 4 PHP?
$_POST и $_SESSION есть с версии 4.1.0
Как я понял, сессии перестали работать именно после апдейта хостера с 4.3.1 (или 4.2.1?) на 4.3.11
Что там конкретно апдейтилось - криворукий мальчег из ТП хостера не имеет понятия
Интересно, как только эти скрипты работали столько лет на 4 PHP?
$_POST и $_SESSION есть с версии 4.1.0
Как я понял, сессии перестали работать именно после апдейта хостера с 4.3.1 (или 4.2.1?) на 4.3.11
Что там конкретно апдейтилось - криворукий мальчег из ТП хостера не имеет понятия
Интересно, как только эти скрипты работали столько лет на 4 PHP?Может, проще все-таки стукнуть кулаком по столу и потребовать от провайдера PHP5?
И Вам спасибо за совет... но было бы проще, не заводил бы тему
Просто и раньше сталкивался с таким - при апе у провайдера до некоторых версий PHP вдруг перестают работать сессии в пользовательских скриптах. Вот и думал, мож кто увидит, с какой настройкой в первом посте что не так.
Просто и раньше сталкивался с таким - при апе у провайдера до некоторых версий PHP вдруг перестают работать сессии в пользовательских скриптах. Вот и думал, мож кто увидит, с какой настройкой в первом посте что не так.
Все права и проч. правильные.Точно? проверьте еще раз права на запись/чтение в session.save_path
И Вам спасибо за совет... но было бы проще, не заводил бы темуТо есть провайдер не хочет апгрейдиться до PHP5 - или вы не хотите?
Или просто интересно разобраться, что там к чему? Если что-то можно тупо исправить "малой кровью", я обычно так делаю и особо не заморачиваюсь.
Сейчас читают
Интим не предлагать!
22104
186
Ясновидение - это дар? Или этому учатся?
76477
257
Подкаты
14738
98
еще раз права на запись/чтение в session.save_pathПрав 777 на tmp обычно достаточно :))
В общем, что-то с железом у провайдера было, на другом серваке все заработало.
Всем спасибо.