Данные Сессии PHP, не сохраняемые

56
задан Ilmari Karonen 27 July 2015 в 08:28
поделиться

12 ответов

Спасибо за всю полезную информацию. Оказывается, что мой хост изменил серверы и начал использовать различную сессию, сохраняют путь кроме/var/php_sessions, который больше не существовал. Решение состояло бы в том, чтобы объявить ini_set(' session.save_path','SOME WRITABLE PATH'); во всех моих файлах сценария, но это будет болью. Я говорил с хостом, и они явно устанавливают путь сессии к реальному пути, который действительно существовал. Надежда это помогает любому испытывающие затруднения пути сессии.

41
ответ дан Crackerjack 26 November 2019 в 17:22
поделиться

Вот одна типичная проблема, которую я не видел обращенный в других комментариях: Ваш хост выполняет какой-то кэш? Если бы они автоматически кэшируют результаты некоторым способом, Вы получили бы этот вид поведения.

1
ответ дан rg88 26 November 2019 в 17:22
поделиться

Я знаю одно решение, которое я нашел (OSX с Apache 1, и просто переключился на PHP5), когда у меня была подобная проблема, было это сбрасывающее 1 определенный ключ (т.е. сбросьте ($ _SESSION ['ключ']);) заставлял его не сохранять. Как только я больше не сбрасывал тот ключ, он сохранил. Я никогда не видел это снова, за исключением того сервера на другом сайте, но тогда это была различная переменная. И при этом что-либо не было особенным.

1
ответ дан Darryl Hein 26 November 2019 в 17:22
поделиться

Ну, мы можем устранить ошибку в коде, потому что я протестировал код своего собственного сервера (PHP 5).

Вот то, что проверить на:

  1. Вы называете session_unset () или session_destroy () где-нибудь? Эти функции сразу удалят данные сессии. Если я поместил их в конце своего сценария, он начинает вести себя точно как Вы, описывают.

  2. Совершает его поступок то же во всех браузерах? Если это работает над одним браузером и не другим, у Вас может быть проблема конфигурации на не функционирующем браузере (т.е. Вы выключили cookie и забыли включать их или блокируете куки по ошибке).

  3. действительно ли папка сессии перезаписываема? Вы не можете протестировать это с is_writable (), таким образом, необходимо будет перейти к папке (от phpinfo (), это похоже на/var/php_sessions), и удостоверьтесь, что сессии на самом деле становятся созданными.

2
ответ дан Nathan Strong 26 November 2019 в 17:22
поделиться

Проверьте, чтобы видеть, сохраняет ли сессия путь, перезаписываемо веб-сервером.

Удостоверяются, что Вам включили cookie.. (Я забываю, когда я выключаю их для тестирования чего-то)

Firefox Использования с расширением поджигателя, чтобы видеть, устанавливается ли cookie и передал назад.

И на несвязанной ноте, начните смотреть на php5, потому что php 4.4.9 является последним из php4 ряда.

5
ответ дан DGM 26 November 2019 в 17:22
поделиться

Проверьте значение "представлений" когда перед постепенным увеличением его. Если по некоторой причудливой причине это станет установленным на строку, то, когда Вы добавляете 1 к нему, это будет всегда возвращаться 1.

if (isset($_SESSION['views'])) {
    if (!is_numeric($_SESSION['views'])) {
        echo "CRAP!";
    }
    ++$_SESSION['views'];
} else {
    $_SESSION['views'] = 1;
}
2
ответ дан nickf 26 November 2019 в 17:22
поделиться

Использовать phpinfo() и проверьте session.* настройки.

Возможно, информация хранится в cookie, и Ваш браузер не принимает куки, что-то как этот.

Проверьте, что сначала и возвращаются с результатами.

Можно также сделать a print_r($_SESSION); иметь дамп этой переменной и видеть содержание....

Относительно Вашего phpinfo(), session.save_path допустимый? Ваш веб-сервер имеет доступ для записи к этому каталогу?

Надеюсь, это поможет.

7
ответ дан Nigel Ren 26 November 2019 в 17:22
поделиться

Просто хотел добавить небольшое замечание, что это также может произойти, если вы случайно пропустите оператор session_start () на своих страницах.

1
ответ дан 26 November 2019 в 17:22
поделиться

Я знаю одно решение, которое я нашел (OSX с Apache 1 и только что перешел на PHP5), когда у меня была аналогичная проблема состоял в том, что отключение 1 определенного ключа (т.е. unset ($ _ SESSION ['key']);) приводило к тому, что он не сохранялся. Как только я больше не отключал этот ключ, он сохранялся. Я никогда не видел этого снова, кроме того сервера, на другом сайте, но тогда это была другая переменная. Ничего особенного не было.

Спасибо за этого, Дэррил. Это мне помогло. Я удалял переменную сеанса, и по какой-то причине она не позволяла сеансу фиксироваться. теперь я просто устанавливаю его на null (что нормально для моего приложения), и он работает.

2
ответ дан 26 November 2019 в 17:22
поделиться

Проверьте, используете ли вы session_write_close (); где бы то ни было, я использовал это сразу после другого сеанса, а затем снова пытался записать в сеанс, но он не работал ... так что просто прокомментируйте это дерьмо

0
ответ дан 26 November 2019 в 17:22
поделиться

Если вы установите сеанс на php5, а затем попытаетесь прочитать его на странице php4, он может выглядеть не в нужном месте! Сделайте страницы одной и той же версии php или установите session_path.

2
ответ дан 26 November 2019 в 17:22
поделиться

Проверьте, кто является группой и владельцем папки, в которой запущен скрипт. Если идентификатор группы или пользователя неверный, например, установлен на root, это приведет к тому, что сеансы не будут сохраняться должным образом.

3
ответ дан 26 November 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: