Я хочу сохранить созданные сеансы в каталоге выше корневого каталога, за исключением случаев, когда я использую любое из следующего:
session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions');
session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // With an extra slash at the end
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions');
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // Again with the extra slash
и ни один из этих методов не работает, когда я загружаю страницу, я получаю следующие ошибки:
Предупреждение: session_start (): файл данных сеанса не создан вашим uid
в /var/www/bootstrap/bootstrap.php в строке 25Предупреждение: session_start (): не удалось прочитать данные сеанса: файлы (путь:
/var/www/public/../storage/sessions/) в
/var/www/bootstrap/bootstrap.php в строке 25
Может кто-нибудь мне помочь?
Редактировать: Мой сервер работает на PHP 7.1
PHP требует, чтобы файл сеанса принадлежал пользователю, работающему с PHP.
Тогда просто беги chown -R www-data:www-data /var/www/storage/sessions/
иметь собственную папку и файлы сессий вашего пользователя PHP (www-data:www-data
ваш PHP пользователь и группа разделены :
).
Вы можете использовать метод PHP get_current_user()
или беги в баш php -i | grep user
и найдите там своего пользователя, использующего PHP.
редактирование конфиг / config.yml и заменить save_path:
session:
save_path: '/tmp'
Я мог бы быть, что ваш файл Session был создан другим пользователем (ну UID), попробуйте (пере) переместить файл (ы) сессии из вашего временного каталога что-то вроде / var / tmp
Я использую это, чтобы также сделать Именованные трубы в php.
<?php
$user = get_current_user(); // get current process user
// We need to modify the permissions so users can write to it
exec( "chown -R {$user}:{$user} $fifoPath" );
Другое решение: переименуйте папку вашего сеанса
var / session to var / session_old
создать новую папку
вар / сессия
и удалите старую.
это работает для меня:
sudo chown -R www-data:www-data /var/lib/php/sessions
В Ubuntu в Windows 10 мой пользователь php является пользователем по умолчанию, который я создаю для первой установки, я не знаю почему, потому что etc/apache2/envvars
не настроен так.
Не берите в голову, я изменяю это, чтобы исправить это быстро, и теперь, это работает.
export APACHE_RUN_USER=rudak
export APACHE_RUN_GROUP=rudak
То, что сработало для меня, может сработать и для вас.
Похоже, что-то пошло не так с сеансом. Откройте DevTools браузера и удалите все Sessioncookies.