Определение пути для хранения файлов сессий

+7
352

Раз за разом на форуме появляются темы, связанные с определением пути хранения сессий. Такие ситуации возникают, как правило, когда сайт переносят с локального сервера на хостинг, с хостинга на хостинг. В большинстве случаев человек, обратившийся за помощью, не понимает, где причина проблем с сайтом. Здесь рассмотрим «легкий» случай (и самый распространенный), когда метод  хранения сессий выбран в админке как «Files».

В документации по переносу сайта есть такая строчка

  1. 'session_save_path' => 'тут указать полный путь или не указывать ничего',


Разберемся с «тут указать полный путь». Штатно этот путь определяется при установке сайта и директория выбирается либо функцией session_save_path(), либо sys_get_temp_dir(). Есть ещё вариант — директорию для хранения сессий можно создать выше корня сайта, назвать её, например, session и разрешить туда запись. Почему выше? Ну, потому что мы же не хотим, чтобы кто попало мог из web смотреть наши сессии. 
Далее нехитрый скрипт, который отпечатает вам все 3 варианта. Назовите файл sp.php, положите его в корень сайта, запустите, набрав в браузере  yoursite.ru/sp.php.


  1. <?php
  2. header("Content-Type: text/plain; charset=utf-8");
  3.  
  4. if ($sp === false) {
  5. echo "1. Путь с помощью session_save_path() не определен";
  6. } else {
  7. echo "1. Путь с помощью session_save_path() определен".PHP_EOL;
  8. echo $sp.PHP_EOL;
  9. }
  10.  
  11. echo "2. Путь хранения временных файлов PHP".PHP_EOL;
  12. echo $sp.PHP_EOL;
  13.  
  14. echo "Вы можете определить уникальную директорию, добавив к пути".PHP_EOL;
  15. $u = DIRECTORY_SEPARATOR.uniqid();
  16. echo $u.PHP_EOL;
  17. echo "Будет, например, так: ".$sp.$u.PHP_EOL.PHP_EOL;
  18.  
  19. $sp = dirname($_SERVER["DOCUMENT_ROOT"]).DIRECTORY_SEPARATOR."session";
  20. echo "3. Возможный путь выше корневой директории".PHP_EOL;
  21. echo $sp.PHP_EOL;


Вам осталось вписать ваш путь в /system/config/config.php

  1. 'session_save_path' => 'сюда',


Нужная директория будет создана автоматически,  правда для 3 случая возможны нюансы, связанные с настройками 
конкретного сервера.

0
Реклама Реклама #
+1
Zau4man Zau4man 1 месяц назад #

Есть путь проще. Открыть файл system/config/config.php и удалить в нем строчку типа

  1. 'session_save_path' => '/var/www/site/data/tmp',

 

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

Перезаходим на сайт, открываем настройки сайта и пересохраняем. Этот путь по умолчанию пропишется в config файл. Для openserver допишется что-то типа

  1. 'session_save_path' => 'd:/ospanel/userdata/temp/',
0
IamB IamB 1 месяц назад #

Да, решение проще, но не всегда работает.

+1
Викторыч Викторыч 1 месяц назад #

Спасибо за науку! И немедленно выпил лайкнул! 

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.