#php #apache #session
#php #apache #сессия
Вопрос:
У меня были проблемы с тем, что мой веб-сайт PHP (SuiteCRM) не мог регистрировать пользователей, и я обнаружил, что это связано с невозможностью записи в каталог сеансов.
Я могу это исправить, создав каталог /tmp/php_sessions
и предоставив ему права на запись для пользователя Apache www-data
. Я вижу, что каталог заполняется файлами при входе пользователей в систему.
Однако Ubuntu Ubuntu удаляет весь мой tmp
каталог при перезагрузке, поэтому мне приходится каждый раз переделывать это заново. Я решил переместить свой save_path
в другое место.
После изменения параметров в моем файле php.ini и перезапуска Apache я могу проверить, что они эффективны, запустив этот простой скрипт:
<?php
echo ini_get("session.save_path");
phpinfo();
?>
Это показывает мне двойное подтверждение нового пути, сначала повторяющееся /var/tmp/php_sessions
, а затем, в середине всей информации phpinfo, показывающее то же значение, что и для обоих Local Value
и Master value
для директивы session.save_path
.
НО каталог, который использует php, по-прежнему является первым, /tmp/php_sessions
! Кажется, что моя настройка игнорируется.
Я что-то упускаю из виду? Где может быть похоронен этот старый параметр? Или как я могу сделать новый эффективным?
(PS — я не использую redis
обработчик, как в другом подобном вопросе SO)
Комментарии:
1. У вас есть разрешение на редактирование вашего
php.ini
файла?2. Вы вручную задавали путь к сеансу
3. Попробуйте добавить путь к сеансу вручную, используя этот код
ini_set(session.save_path, '/path/to/your/folder')
, поместите этот код после<?php
, после этого вы начнете сеанс с помощьюsession_start()
4. @Vigneschinnaiyan Я попробовал, и это не сработало, те же результаты. Однако ваш комментарий направил меня на правильный путь, и я смог решить проблему. Я отправлю его в качестве ответа через несколько минут. Большое спасибо!
Ответ №1:
Хорошо, я решил свою собственную проблему, и общий ответ заключается в следующем:
Есть еще две вещи, которые могут изменять путь и должны быть проверены,
-
возможно, PHP-код приложения изменяет
ini
директиву, выполните поиск в кодеini_set(session.save_path
-
возможно, PHP-код использует команду
session_save_path
PHP для переопределенияini
. Также выполните поиск в коде (и обратите внимание на два подчеркивания_
!)
И конкретный ответ для моего случая заключался в том, что SuiteCRM использует session_save_path
command для задания своего пути со значением, полученным из файла config.php
, найденного в корне веб-страницы. Вот где я нашел старую настройку, и ее изменение решило мою проблему (надеюсь, навсегда).