Расположение файлов сеансов в Apache/PHP
Каково местоположение файлов сеансов по умолчанию при установке Apache/PHP на Ubuntu 10.10?
Параметр session.save_path умолчанию имеет значение «» которое будет соответствовать вашему системному временному каталогу. Посмотрите этот комментарий на https://bugs.php.net/bug.php? >
Новое значение по умолчанию для save_path в предстоящем выпуске (sic) будет пустой строкой, которая вызывает проверку временного каталога.
Чтобы найти текущий путь сохранения сеанса, вы можете использовать
Обратитесь к этому ответу, чтобы узнать, каков временный путь, когда эта функция возвращает пустую строку.
Сначала проверьте значение session.save_path с помощью ini_get(‘session.save_path’) или phpinfo() . Если это не пусто, тогда он покажет, где хранятся файлы сеанса. Во многих сценариях он по умолчанию пуст, и в этом случае читайте:
На машинах Ubuntu или Debian, если session.save_path не установлен, файлы сеанса сохраняются в /var/lib/php5 .
В системах RHEL и CentOS, если session.save_path не установлен, файлы сеанса будут сохранены в /var/lib/php/session
Я думаю, что если вы скомпилируете PHP из исходного кода, тогда, когда session.save_path не будет установлен, файлы сеанса будут сохранены в /tmp (я не тестировал это сам, хотя).
Другим общим положением по умолчанию, кроме /tmp/ , является /var/lib/php5/
Если вы не уверены в скомпилированных настройках по умолчанию, посмотрите соответствующий php.ini .
Обычно это покажет закомментированное значение по умолчанию.
Ubuntu/Debian старые/новые местоположения php.ini:
Более /etc/php5/apache2/php.ini php5 с Apache: /etc/php5/apache2/php.ini
Более старый php5 с NGINX + FPM: /etc/php5/fpm/php.ini
Ubuntu 16+ с Apache: /etc/php/*/apache2/php.ini
Ubuntu 16+ с NGINX + FPM — /etc/php/*/fpm/php.ini
/*/ = ваша текущая версия PHP модуля, используемого на вашем веб-сервере.
Вам необходимо выяснить, какая версия PHP используется, а затем найти соответствующую запись php.ini:
Одна строка (более новая версия Ubuntu/Deb):
APACHEPHPVER=$(a2query -m | grep «php» | grep -Eo «[0-9]+\.[0-9]+») && grep «;session.save_path»/etc/php/$
/apache2/php.ini
Или же:
Поскольку PHP 7.3 является версией, работающей на веб-сервере Apache, вы должны использовать ее:
Или через командную строку /»cli» (см. Примечание ниже):
Версия «cli»/php.ini для командной строки обычно совпадает с версией Apache/FPM по сравнению с настройками пути сеанса. Вы также можете использовать аналогичную команду, чтобы отобразить настройку Apache/Nginx для команды или веб-страницы wget/curl. Но его так же легко найти в надлежащем Apache или FPM php.ini чтобы гарантировать, что вы видите правильный путь сеанса.
РЕДАКТИРОВАТЬ: За комментарий @aesede → Добавлен php -i . Спасибо
XCII. Функции обслуживания сессий
Поддержка сессий в PHP это способ сохранения определённых данных в течение последовательно выполняемых доступов. Это даёт возможность создать более специализированные приложения и увеличить привлекательность вашего web-сайта.
Если вы знакомы с обслуживанием сессий с помощью PHPLIB, вы заметите, что некоторые вопросы аналогичны поддержке сессий в PHP.
Посетителю вашего сайта присваивается уникальный id, так называемый session id. Он хранится в куке на стороне пользователя или вводится в URL.
Поддержка работы с сессиями даёт вам возможность регистрировать произвольное количество переменных и сохранять их в промежутках между выполнениями запросов. Когда пользователь заходит на ваш сайт, PHP будет автоматически (если session.auto_start имеет значение 1) или по вашему запросу (явно — через session_start() или неявно — через session_register() ) проверять, выслан ли специфический session id вместе с запросом. Если это так, воссоздаётся предшествующее окружение.
Все зарегистрированные переменные сериализуются после окончания запроса. Зарегистрированные undefined-переменные маркируются как не определённые. При последующих запросах они не определяются модулем сессии, если только пользователь не определить их позднее.
Установки конфигурации track_vars и register_globals определяют, как переменные сессии хранятся и восстанавливаются.
Примечание: в PHP 4.1.0 $_SESSION доступна как глобальная переменная, совсем как $_POST , $_GET , $_REQUEST и так далее. В отличие от $HTTP_SESSION_VARS , $_SESSION всегда глобальна. Следовательно, global не должно использоваться для $_SESSION .
Если track_vars включена, а register_globals отключена, только члены глобального ассоциативного массива $HTTP_SESSION_VARS могут быть зарегистрированы как переменные сессии. Восстановленные переменные сессии будут доступны только в массиве $HTTP_SESSION_VARS .
Внимание! | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Предупреждение! | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
Если значения в сеансах сохранены
Где хранятся эти значения сеанса.. означает в каком-то файле? где??
4 ответа
2 Решение Sarfraz [2010-05-03 16:54:00]
Да, они хранятся во временном файле где-то на сервере, на котором находится ваш сайт. Вы можете указать этот параметр в php.ini с помощью session.save_path .
Вы также можете использовать функцию session_save_path , чтобы установить и получить путь к сеансу из script.
Синтаксис:
session_save_path — Получить и/или установить текущий путь сохранения сеанса
2 MJB [2010-05-03 16:54:00]
Разве это не во временном файле в session.save_path , независимо от того, что установлено?
Вы также можете найти ответ, который вы хотите более подробно здесь.
0 jaltiere [2010-05-03 16:53:00]
По умолчанию я думаю, что php хранит информацию о сеансе на сервере, хотя вы можете переопределить это для хранения информации о сеансе в файлах cookie на стороне клиента.
XCII. Функции обслуживания сессий
Поддержка сессий в PHP это способ сохранения определённых данных в течение последовательно выполняемых доступов. Это даёт возможность создать более специализированные приложения и увеличить привлекательность вашего web-сайта.
Если вы знакомы с обслуживанием сессий с помощью PHPLIB, вы заметите, что некоторые вопросы аналогичны поддержке сессий в PHP.
Посетителю вашего сайта присваивается уникальный id, так называемый session id. Он хранится в куке на стороне пользователя или вводится в URL.
Поддержка работы с сессиями даёт вам возможность регистрировать произвольное количество переменных и сохранять их в промежутках между выполнениями запросов. Когда пользователь заходит на ваш сайт, PHP будет автоматически (если session.auto_start имеет значение 1) или по вашему запросу (явно — через session_start() или неявно — через session_register() ) проверять, выслан ли специфический session id вместе с запросом. Если это так, воссоздаётся предшествующее окружение.
Все зарегистрированные переменные сериализуются после окончания запроса. Зарегистрированные undefined-переменные маркируются как не определённые. При последующих запросах они не определяются модулем сессии, если только пользователь не определить их позднее.
Если вы включили session_unregister(), поскольку переменные сессии регистрируются как глобальные переменные, когда данные сессии десериализуются. Отключение
Если arg_separator.output php.ini позволяет специализировать разделитель аргументов.
Следующие пример демонстрирует, как зарегистрировать переменную и как корректно связаться с другой страницей, используя S >
Пример 5. Подсчёт количества входов отдельного пользователя
не нужен, если session_set_save_handler() для создания набора функций хранения уровня пользователя.
Система менеджмента сессий поддерживает несколько опций конфигурации, которые вы можете поместить в ваш файл php.ini . Мы дадим краткий обзор.
session.save_handler определяет имя обработчика хранения и запрашивания данных, ассоциированных с сессией. По умолчанию files .
session.save_path определяет аргумент, который передаётся для хранения обработчика. Если вы выбрали обработчик файлов по умолчанию, это будет путь к месту создания файлов. По умолчанию /tmp . Если глубина пути для session.save_path больше 2, сборка мусора не будет выполняться.
Предупреждение! | ||
---|---|---|
Код |
---|
Если не можете сами, то попросите техподдержку хостинга.
Создайте, например, в папке htdocs папку session, и попросите техподдержку хостинга поменять путь в php.ini на session.save_path = /storage/home/srv14976/htdocs/session/
Да, не забудьте права на запись в папку session установить.
по умолчанию каталог темпа — htdocs/tmp, права на запись стоят, bitrix на это начхал( пишит эту ошибку и все тут. я недоумеваю что делать.
З.Ы. возможно bitrix просит открыть доступ к каталогу не общему, а внутреннему, так что вопрос думаю к администраторам мой..
Появилась та же ошибка. При чем — перед этим 3 копии поставил — без вопросов.
save_path указывает на существующий каталог с возможностью записи (там уже лежат файлы сессий от других сайтов)
строка 279 удалить
if (!BXInstallServices::CheckSession())
<
$this->SetError(InstallGetMessage(«INST_SESSION_NOT_SUPPORT»));
return false;
>
Цитата |
---|
Василий Лучинкин пишет: \bitrix\modules\main\install\wizard\wizard.php |
строка 279 удалить
if (!BXInstallServices::CheckSession())
<
$this->SetError(InstallGetMessage(«INST_SESSION_NOT_SUPPORT»));
return false;
>
Ага, только это зенд. wizard.php закодирован.
та же проблема. Чёртов битрикс. Голову себе сломал, В php.ini параметр session.save_path = «/tmp» У папки tmp права стоят 777. Бред.
У меня тоже имеет место эта проблема.
Цитата |
---|
Илья Душин пишет: В php.ini параметр session.save_path = «/tmp» У папки tmp права стоят 777. Бред. |
менял в htacces путь у session.save_path не помогло (
через restore сайт восстановился с н-ного раза но вылетал из админки.
Сейчас пробую поставить заново. Выдает что недоступен каталог под сессии.
Хостеры пинают что у них все хорошо, на другом хостинге все поднял без проблем.
Доступа к php.ini нету.
пробовал создавать директории и ставить на них права и по пути в phpinfo и в корне в tmp и уровнем выше, тоже нашел tmp какой то, битрикс не хватает
Поделюсь интересной ситуацией. Я также напоролся на ошибку «Нет. Вероятно, каталог, используемый для сохранения параметров сессии, не доступен для записи». В php.ini прописал session.save_path = «C:\tmp»(ставил в локале), жмакаю F5(ни один раз), проблема не решается. Захожу в папку tmp сессия создана, но весит 0 байт, а потом чисто случайно нажал «Назад» на предущий шаг и снова вперёд и.. даже с бубном прыгать не надо)) все работает)
Всем удачи, может кому-то моё сообщение поможет
такой прикол, при установке вылазит ошибка:
Кодировка UTF-8 доступна для версии MySQL начиная с 4.1.2
хотя я не ставлю галочку установка в utf-8 и mysql 5-й .
Столкнулся с аналогичной проблемой.
PHP 5.3.3
Сессии включены (Session Support: enabled), каталог для сохранения сессий установлен и доступен для записи.
Тут чуть выше подсказали заглянуть в /bitrix/modules/main/install/wizard/wizard.php, но его без лишних усилий не прочитаешь. Однако тут подсказали, что доступность сессий проверяет BXInstallServices::CheckSession(). Код этого метода как раз доступен (/bitrix/modules/main/install/wizard/utils.php):
Код |
---|
Посмотрим на один метод выше:
Код |
---|
Уж не знаю, что именно хотели сказать разработчики, но с учётом SetSession() , CheckSession() , я считаю, должен выглядеть как-то так:
Код |
---|
При таком раскладе во-первых, всё логично: записали, потом проверили, записалось ли, и во-вторых, проверка работает
session.save_path
Я раньше строил сайт где в настройках ПХП в разделе SESSION было
Потом перешел на другое место..и там сессии не работают (хотя ошибок тоже не выдается).
Посмотрел в настройках, и вижу там
Возможно причина в этом, но я все равно толком не понял. К примеру, как я могу изменить их настройки. и почему сессии все же не работают.
Создал там в основном root документе (где все файлы сайта) папку tmp и в моем файле где должна работать сессия, перед session_start кинул строчку session_save_path(‘/tmp/’);
Тем самым указав чтоб файлы сессии хранились там..но все равно не работает.
Словом если знаете какие-либо способы обойти эту проблему, и в чем именно она вообще заключается..Прошу помочь! Застрял.. :stena
Где сохранены значения в сеансах
Где эти значения сеанса сохранены .. означает в каком-то файле? где ??
Создан 03 май. 10 2010-05-03 13:50:56 Mohit Jain
4 ответа
Да, они хранятся во временном файле где-то на сервере, на котором находится ваш сайт. Вы можете указать эту настройку в php.ini с session.save_path .
Вы также можете использовать функцию session_save_path , чтобы установить и получить путь к сеансу из вашего сценария.
Синтаксис:
session_save_path — Получить и/или установить текущий сеанс сохранения пути
Создан 03 май. 10 2010-05-03 13:54:57 Sarfraz
По умолчанию я думаю, что php хранит информацию о сеансе на сервере, хотя вы можете переопределить это, чтобы хранить информацию о сеансе в файлах cookie на стороне клиента.
Создан 03 май. 10 2010-05-03 13:53:34 jaltiere
Хранение данных «сеанс» в файлах cookie бессмысленно. – Crozin 03 май. 10 2010-05-03 13:55:03
И да, я считаю, что эта информация хранится в файле на сервере, используя сгенерированную буквенно-цифровую строку, поскольку это имя. (это PHPSESSID, и вы можете выбрать, где файл хранится с помощью метода session_save_path) – jaltiere 03 май. 10 2010-05-03 13:56:20
@Crozin: Я не сказал, что это хорошая идея, я просто сказал, что это возможно. – jaltiere 03 май. 10 2010-05-03 13:57:27
Не находится ли он в временном файле в session.save_path , независимо от того, что настроено?
Вы также можете найти ответ, который вы хотите более подробно here.
Создан 03 май. 10 2010-05-03 13:54:01 MJB
PHP сохраняет сеансы в файлах. Местоположение этих файлов определяется в php.ini установкой session.save_path .
Создан 03 май. 10 2010-05-03 13:55:31 Matijs