session_save_path
session_save_path() returns the path of the current directory used to save session data.
Parameters
Session data path. If specified and not null , the path to which data is saved will be changed. session_save_path() needs to be called before session_start() for that purpose.
Note:
On some operating systems, you may want to specify a path on a filesystem that handles lots of small files efficiently. For example, on Linux, reiserfs may provide better performance than ext2fs.
Return Values
Returns the path of the current directory used for data storage, or false on failure.
Changelog
See Also
User Contributed Notes 5 notes
I made a folder next to the public html folder and placed these lines at the very first point in index.php
Location of session folder:
What I placed in index.php at line 0:
ini_set ( ‘session.save_path’ , realpath ( dirname ( $_SERVER [ ‘DOCUMENT_ROOT’ ]) . ‘/../session’ ));
session_start ();
This is the only solution that worked for me . Hope this helps someone .
Debian does not use the default garbage collector for sessions. Instead, it sets session.gc_probability to zero and it runs a cron job to clean up old session data in the default directory.
As a result, if your site sets a custom location with session_save_path() you also need to set a value for session.gc_probability, e.g.:
session_save_path ( ‘/home/example.com/sessions’ );
ini_set ( ‘session.gc_probability’ , 1 );
?>
Otherwise, old files in ‘/home/example.com/sessions’ will never get removed!
Session on clustered web servers !
We had problem in PHP session handling with 2 web server cluster. Problem was one servers session data was not available in other server.
So I made a simple configuration in both server php.ini file. Changed session.save_path default value to shared folder on both servers (/mnt/session/).
If session.save_handler is set to files, on systems that have maximum path length limitations, when the session data file’s path is too long, php may get you an error like «No such file or directory» and fails to start session, although the session-saving folder really exists on the disk.
1. Keep the session-saving folder’s absolute path not too long
2. If you’re with PHP 7.1+, don’t set session.sid_length to a number too great, such as 255
I once got stuck with this problem on Windows and wasted hours to solve it.
ini_set ( ‘session.save_path’ , realpath ( dirname ( $_SERVER [ ‘DOCUMENT_ROOT’ ]) . ‘/tmp’ ));
ini_set ( ‘session.gc_probability’ , 1 );
session_start ();
?php
?>
(for using above code create a tmp folder/directory in your directory)
- Session Functions
- session_abort
- session_cache_expire
- session_cache_limiter
- session_commit
- session_create_id
- session_decode
- session_destroy
- session_encode
- session_gc
- session_get_cookie_params
- session_id
- session_module_name
- session_name
- session_regenerate_id
- session_register_shutdown
- session_reset
- session_save_path
- session_set_cookie_params
- session_set_save_handler
- session_start
- session_status
- session_unset
- session_write_close
Php session save path php ini
Предоставляя INI-настройки, связанные с сессиями, вы можете улучшить безопасность сессий. Некоторые важные настройки безопасности не имеют рекомендованных значений. Вы сами ответственны за выбор необходимых значений.
- session.cookie_lifetime=0 0 имеет особое значение. Он сообщает браузеру не сохранять cookie в постоянное хранилище. Следовательно, когда браузер закрывается, сессионные cookie сразу же удаляются. Если задать значение отличное от 0, это может позволить другим пользователям использовать эти cookie. В большинстве случаев лучше всего использовать » 0 «. Если требуется функциональность автологина, реализовывайте его самостоятельно и никогда не используйте для этого долгоживущие сессии. Более подробно изложено выше в соответствующих разделах.
- session.use_cookies=On session.use_only_cookies=On Несмотря на то, что HTTP-cookie имеют некоторые проблемы, всё же они наиболее предпочтительны для хранения идентификатора сессии. Когда это возможно, для управления идентификаторами сессий необходимо использовать «cookie». Большинство приложений должны использовать cookie для идентификатора сессии. Если session.use_only_cookies=Off, модуль сессии будет использовать идентификатор, установленный через GET или POST, если «cookie» не была выставлена заранее.
- session.use_strict_mode=On Крайне рекомендуется включать session.use_strict_mode. По умолчанию не включено. Это не позволит сессионному модулю использовать неинициализированные идентификаторы сессий. Другими словами, сессионный модуль будет принимать только корректные идентификаторы, сгенерированные им же и будет игнорировать идентификаторы созданные на стороне пользователя. Из-за особенностей спецификации cookie, атакующий может сделать cookie с идентификатором сессии неудаляемой с помощью локальной базы cookie или JavaScript-инъекцией. session.use_strict_mode может не дать атакующему использовать этот идентификатор.
Замечание: Атакующие могут инициализировать идентификатор сессии на своём устройстве и выставить его жертве. Они должны будут поддерживать сессию в активном состоянии для злоупотреблений. Атакующим понадобится совершить дополнительные действия для проведения атаки по этому сценарию. Поэтому session.use_strict_mode служит как предотвращение этому.
Замечание: Защитный ключ CSRF должен периодически обновляться, как и идентификатор сессии.
Замечание: Некоторые обработчики сохранения сессий не используют механизм устаревания сессий на основе вероятностей. Например memcached, memcache. Читайте соответствующую документацию для более полной информации.
Замечание: Идентификатор сессии может утечь через закладку в браузере, URL посланный по почте, сохранённый исходник HTML.
Как изменить папку для хранения файлов сессий
На первом шаге установки Joomla, при проверке параметров сервера, иногда выдается ошибка, что папка указанная в переменной Session save path недоступна по записи. Конечно это не помешает установить Joomla, но создаст серьезные проблемы при попытке авторизации в административной панели. Что делать, если на сервере, по каким либо причинам неверно указан путь к папке хранения файлов сессий или отсутствуют права на запись?
Если папка существует и проблема в отсутствии прав на запись, то в первую очередь следует попробовать установить соответствующие права. Если же это по каким либо причинам невозможно, то можно попробовать изменить значение этой переменной, указав в ней путь к другой существующей и доступной на запись папке на серрве. То есть создать отдельную папку, и изменить значение переменной PHP session.save_path одним из ниже перечисленных способов.
Изменение параметра session.save_path в php.ini
Изменить папку для хранения файлов сессий можно в файле php.ini (конфигурационный файл PHP). Для этого необходимо найти в файле php.ini параметр session.save_path и в качестве значения параметра указать существующую и доступную по записи папку. Например вот так:
session.save_path = d:/www/tmp/
где «d:/www/tmp/» это абсолютный путь к существующей и доступной для записи папке
Использование .htaccess
Изменить директорию для хранения файлов сессий можно добавив в файл .htaccess, расположенный в корне сайта, следующую строчку:
php_value session.save_path "d:/www/tmp/"
где «d:/www/tmp/» это абсолютный путь к существующей и доступной для записи папке
Использование функции session_save_path
- offline.php
- administrator\index.php
- administrator\index2.php
- administrator\index3.php
- administrator\components\com_users\admin.users.php
- administrator\includes\auth.php
где «d:/www/tmp/» это абсолютный путь к существующей и доступной для записи папке
Использование функции ini_set
- offline.php
- administrator\index.php
- administrator\index2.php
- administrator\index3.php
- administrator\components\com_users\admin.users.php
- administrator\includes\auth.php
ini_set('session.save_path', "d:/www/tmp/");