Спасибо за всю полезную информацию. Оказывается, что мой хост изменил серверы и начал использовать различную сессию, сохраняют путь кроме/var/php_sessions, который больше не существовал. Решение состояло бы в том, чтобы объявить ini_set(' session.save_path','SOME WRITABLE PATH');
во всех моих файлах сценария, но это будет болью. Я говорил с хостом, и они явно устанавливают путь сессии к реальному пути, который действительно существовал. Надежда это помогает любому испытывающие затруднения пути сессии.
Вот одна типичная проблема, которую я не видел обращенный в других комментариях: Ваш хост выполняет какой-то кэш? Если бы они автоматически кэшируют результаты некоторым способом, Вы получили бы этот вид поведения.
Я знаю одно решение, которое я нашел (OSX с Apache 1, и просто переключился на PHP5), когда у меня была подобная проблема, было это сбрасывающее 1 определенный ключ (т.е. сбросьте ($ _SESSION ['ключ']);) заставлял его не сохранять. Как только я больше не сбрасывал тот ключ, он сохранил. Я никогда не видел это снова, за исключением того сервера на другом сайте, но тогда это была различная переменная. И при этом что-либо не было особенным.
Ну, мы можем устранить ошибку в коде, потому что я протестировал код своего собственного сервера (PHP 5).
Вот то, что проверить на:
Вы называете session_unset () или session_destroy () где-нибудь? Эти функции сразу удалят данные сессии. Если я поместил их в конце своего сценария, он начинает вести себя точно как Вы, описывают.
Совершает его поступок то же во всех браузерах? Если это работает над одним браузером и не другим, у Вас может быть проблема конфигурации на не функционирующем браузере (т.е. Вы выключили cookie и забыли включать их или блокируете куки по ошибке).
действительно ли папка сессии перезаписываема? Вы не можете протестировать это с is_writable (), таким образом, необходимо будет перейти к папке (от phpinfo (), это похоже на/var/php_sessions), и удостоверьтесь, что сессии на самом деле становятся созданными.
Проверьте, чтобы видеть, сохраняет ли сессия путь, перезаписываемо веб-сервером.
Удостоверяются, что Вам включили cookie.. (Я забываю, когда я выключаю их для тестирования чего-то)
Firefox Использования с расширением поджигателя, чтобы видеть, устанавливается ли cookie и передал назад.
И на несвязанной ноте, начните смотреть на php5, потому что php 4.4.9 является последним из php4 ряда.
Проверьте значение "представлений" когда перед постепенным увеличением его. Если по некоторой причудливой причине это станет установленным на строку, то, когда Вы добавляете 1 к нему, это будет всегда возвращаться 1.
if (isset($_SESSION['views'])) {
if (!is_numeric($_SESSION['views'])) {
echo "CRAP!";
}
++$_SESSION['views'];
} else {
$_SESSION['views'] = 1;
}
Использовать phpinfo()
и проверьте session.*
настройки.
Возможно, информация хранится в cookie, и Ваш браузер не принимает куки, что-то как этот.
Проверьте, что сначала и возвращаются с результатами.
Можно также сделать a print_r($_SESSION);
иметь дамп этой переменной и видеть содержание....
Относительно Вашего phpinfo()
, session.save_path
допустимый? Ваш веб-сервер имеет доступ для записи к этому каталогу?
Надеюсь, это поможет.
Просто хотел добавить небольшое замечание, что это также может произойти, если вы случайно пропустите оператор session_start () на своих страницах.
Я знаю одно решение, которое я нашел (OSX с Apache 1 и только что перешел на PHP5), когда у меня была аналогичная проблема состоял в том, что отключение 1 определенного ключа (т.е. unset ($ _ SESSION ['key']);) приводило к тому, что он не сохранялся. Как только я больше не отключал этот ключ, он сохранялся. Я никогда не видел этого снова, кроме того сервера, на другом сайте, но тогда это была другая переменная. Ничего особенного не было.
Спасибо за этого, Дэррил. Это мне помогло. Я удалял переменную сеанса, и по какой-то причине она не позволяла сеансу фиксироваться. теперь я просто устанавливаю его на null (что нормально для моего приложения), и он работает.
Проверьте, используете ли вы session_write_close (); где бы то ни было, я использовал это сразу после другого сеанса, а затем снова пытался записать в сеанс, но он не работал ... так что просто прокомментируйте это дерьмо
Если вы установите сеанс на php5, а затем попытаетесь прочитать его на странице php4, он может выглядеть не в нужном месте! Сделайте страницы одной и той же версии php или установите session_path.
Проверьте, кто является группой и владельцем папки, в которой запущен скрипт. Если идентификатор группы или пользователя неверный, например, установлен на root, это приведет к тому, что сеансы не будут сохраняться должным образом.