2013-05-13 2 views
0

Я не работал с php в течение некоторого времени и вернулся к одному из моих проектов, чтобы узнать, что переменная сессии не сохраняется. Это стало неожиданностью, потому что в последний раз, когда я проверял, он работал, и я не использовал php (поэтому не изменил код или конфигурацию).php session не хранится в chrome

Ситуация такова: сеанс не сохраняется на всех страницах (я могу сохранить его, и он показывает то же самое на странице, но когда я обновляюсь - ничего не меняется).

Я посмотрел здесь PHP Session data not being saved и повторили пример:

<?php 
session_start(); 
if(isset($_SESSION['views'])) 
    $_SESSION['views'] = $_SESSION['views']+ 1; 
else 
    $_SESSION['views'] = 1; 

echo "views = ". $_SESSION['views']; 
echo '<p><a href="page1.php">Refresh</a></p>'; 

, но ничего не меняется: я до сих пор взгляды = 1.

Тем не менее, я не изменил мой конфиг, но я все еще смотрел на phpinfo ():

Я проверил свои права на запись в папку/tmp - они в порядке, причем после каждого обновления появляется новый файл.

Затем я проверил работу в других браузерах: и, к моему удивлению, он работает в firefox: число там правильно увеличивается.

Так что ситуация: в хроме это не работает, в firefox это работает. Я использую хром по умолчанию. Я также помню игру с хромированными опциями, когда она переключается на мигание, но, насколько я помню, я все изменил.

Любая идея, как я могу исправить php-сессии в хроме?

PS:

  • печенье включены в хроме
  • сессий файлы в/TMP Я пытался удалить их все, и когда позже я обновить страницу в хроме - появится новый файл
  • в заголовки Я отправляю Cookie: PHPSESSID = mystring, но не идентификатор сеанса

ответ

0

Включите куки-файлы и выйдите из инкогнито (в частном порядке) в Chrome.

редактировать: попробуйте установить session.cache_expire обратно до 180 (по умолчанию)

+0

@SalvadorDali Uhm, глядя на вашу phpinfo ... Если ваш session_cache_expire будет 0?! Попробуйте вернуть его на 180 (по умолчанию). Вы можете попробовать сделать это в коде без редактирования php.ini, поставив 'session_cache_expire (180);' ** перед ** 'session_start();'. В руководстве не указано поведение по умолчанию для установки session.cache_expire в 0, поэтому это может означать 0 минут. –

+0

@SalvadorDali Но просто для двойной проверки: FireFox и IE работают? И в инструментах разработчика вы видите, что страница загружается и получает 200 - ОК? (Не то, чтобы он обслуживался из кеша.) –

0

Я приходил на некоторых пограничных случаях при использовании PHP сессий с различными браузерами.

Можете ли вы подтвердить, что пример кода работает, если используется session_write_close() непосредственно перед заявлениями echo?

Также вы должны рассмотреть возможность проведения сессии в другом хранилище, а не по умолчанию - в файлах в папке tmp. Memcache, redis, база данных - все варианты, которые будут масштабироваться.

+0

, но значение по умолчанию должно работать, и для перехода на другое хранилище только потому, что это не работает, это немного неудобно ... – Nanne

+0

Я упомянул о соображении, основанном на моем опыте с использованием сеансов. Я думаю, что нет опытного разработчика php, который предпочел бы сохранить свои сеансы в папке tmp по умолчанию. –

+0

Обратите внимание, что это всего лишь совет - это не решит проблему, о которой он жалуется. Решение, которое я дал, - попробовать '' 'session_write_close()' ''. –

0

Прокомментировать session.save_path = "/tmp" директива в формате php.ini используя префикс ;.

Таким образом, после перезагрузки apache, phpinfo() должен показать no value для session_save_path

+0

Как это исправить вопрос: '' 'Любая идея, как я могу исправить php-сессии в chrome?' '' –

+0

cokies отправляет сервер PHP в браузер и сохраняет его в 'session.save_path', но, возможно, ваш браузер 'chrome' не имеют доступа к пути – Amir

+0

« save_path »относится к тому, где PHP хранит физический файл для сеанса на сервере. У браузера не будет доступа к этому пути. – PeerBr

0

Пожалуйста, проверьте использование куки сессии в php.ini. Если он равен нулю, активируйте его до 1, например session.use_cookies = 1

1

Это известная проблема в Chromium. Issue 114877

Поместите значок в корневую папку, и это должно исправить вашу проблему.

Смежные вопросы