Поделиться проблемой, которая у меня была (и сейчас решена).
На моей машине для разработки я запускаю IIS с PHP. Я обновился до PHP7, и вдруг мой код больше не работал, возвращая эту ошибку …
session_start (): не удалось прочитать данные сеанса: пользователь (путь: C: \ WINDOWS \ temp)
Похоже, проблема с разрешениями, верно? Итак, я потратил много времени на настройку php.ini и пытался изменить права доступа к папке — безуспешно.
Потом я кое-что понял. Смотрите мой ответ ниже.
Я наконец понял, что сообщение бессмысленно — приложение реализует свой собственный обработчик сеанса, используя базу данных. в читать Метод, я получаю данные сеанса в виде строки из базы данных.
class Sess implements SessionHandlerInterface
...
public function read($key)
{
$qKey = U_Data::quote($key);
$dt = U_Data::datetime();
$sql = <<<EOT
SELECT `sess_data` FROM `sess`
WHERE `sess_key` = $qKey
AND `sess_exp_ts` > $dt
ORDER BY `sess_exp_ts` DESC
LIMIT 1
EOT;
return U_Data::getOneVal($sql);
}
U_Data :: getOneVal Метод имеет второй параметр, который нужно вернуть, если нет соответствующих данных. По умолчанию ноль и это работало нормально в PHP5, но в PHP7.1 это вызывает ошибку. Простое изменение, возвращающее пустую строку, вместо этого решило проблему.
return U_Data::getOneVal($sql, '');
Так и есть. Если вы получаете предупреждение о том, что session_start не работает, и вы реализуете свой собственный обработчик сеанса, попробуйте проверить свой код в читать способ убедиться в этом всегда возвращает строку.
(Примечание: U_Data — это просто мой собственный класс утилит данных)
Я надеюсь, что это спасет кого-то еще часы, которые я потратил, ломая мой мозг!
Сам получал такую же ошибку. После многих поисков и поисков он подтвердил, что в моем случае это действительно проблема с разрешениями, хотя и в моей корневой папке htdocs, а не по пути, указанному в выводе ошибки. Разрешения для корневой папки были 700, тогда как все остальное в ней было 755 (у меня есть установка Joomla, которая предписывает 755 для разрешений папки). Исправление прав доступа к корневой папке наконец разблокировало проблему.