Как я могу исправить ошибку Permission при вызове session_start ()? - PullRequest
21 голосов
/ 03 января 2011

когда я загрузил скрипт на сервер, я получил эту ошибку

Предупреждение: неизвестно: открытый (/ TMP / sess_58f54ee6a828f04116c2ed97664497b2, O_RDWR) не удалось: в доступе отказано (13) в Неизвестно в строке 0

Предупреждение: неизвестно: не удалось записать данные сеанса (файлы). Пожалуйста, подтвердите что текущая настройка session.save_path правильный (/ tmp) в Неизвестно в строке 0

ошибка появилась при звонке session_start(); хотя я установил разрешение папки / tmp на 777.

Ответы [ 15 ]

25 голосов
/ 03 января 2011

Изменить путь сеанса, где вы можете записать данные или связаться с администратором сервера по поводу проблемы / tmp

http://php.net/manual/en/function.session-save-path.php

9 голосов
/ 03 января 2011

вам нужно будет изменить директиву session.save_path php.ini

Вы можете сделать это, используя session_save_path

6 голосов
/ 26 января 2013

Если у вас есть доступ по SSH, вот как исправить разрешение и владельца

sudo chown -R NAME_OF_USER /tmp

Заменить NAME_OF_USER пользователем, под которым запускается php.Вы можете найти его, просто поместив эти строки в php-файл:

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
exit;
3 голосов
/ 03 января 2011

Кроме того, вы можете использовать ini_set('session.save_path', '/dir/here'); при условии, что у вас есть доступ к этой функции. Другие предложенные способы действительны.

2 голосов
/ 01 июля 2017

У меня та же проблема с правами доступа, но на /var/lib/php/session/.

Чтобы исправить это, я удаляю файл и перезапускаю php-fpm.

rm -rf /var/lib/php/session/sess_p930fh0ejjkeeiaes3l4395q96
sudo service php5.6-fpm restart

Теперь все работает хорошо.

2 голосов
/ 13 октября 2016

Я понимаю, что это старый пост, однако я столкнулся с этой проблемой и нашел простое решение.

Для меня проблема произошла с одним из моих веб-сайтов, развернутых локально.Я не пытался получить доступ к веб-сайтам с помощью других браузеров, но это происходило каждый раз, когда я пытался получить доступ к этому сайту через Chrome.Я решил зайти в инструменты разработчика Chrome на вкладке приложения и нажать «Очистить хранилище».Вуаля - все снова работает как волшебство.

Надеюсь, это поможет кому-то еще!

2 голосов
/ 21 февраля 2014

У меня была эта проблема в следующей ситуации:

  1. Я заполнил некоторые сессии с помощью PHP
  2. Пока сеанс был еще активен, я перешел с PHP 5.4 на 5.3 на моем хосте.
  3. Перезагрузка страницы выдала ошибку, описанную выше.
  4. Снова сбросьте версию PHP до 5.4.
  5. Используется session_unset (); и session_destroy (); очистить текущий сеанс.
  6. Изменена версия PHP обратно на 5.3.
  7. Теперь это снова работает.

Вывод: по несоответствующей причине мне пришлось изменить свою версию PHP, и при переключении с сессиями во время сеанса они повреждены.

2 голосов
/ 14 января 2013

Убедитесь, что у вас нет проблем с дисковым пространством.Если все разрешения правильные (и 777 должен сделать это за вас), то вы все равно можете получить эту ошибку (для некоторых версий PHP и Apache), если недостаточно места для записи на диск.

2 голосов
/ 30 октября 2012

У меня точно такая же проблема с одним из моих PHP-скриптов, и я был похож на то, что я сломал, потому что он отлично работал накануне, и я запускаю его со своей локальной машины Puppy Linux, так что это не так даже хост или что-нибудь.

Единственное, что я делал до этого, пытался заставить Java работать в веб-браузере, так что кое-как мне удалось заставить Java работать, но сломал PHP - упс!

В любом случае я помню, что, пытаясь заставить Java работать, я удалил содержимое папки / tmp, чтобы стереть все, что может вызывать проблемы (на самом деле оказалось, что с Java я использовал старый плагин oij с новый Firefox)

Чтобы решить эту проблему, я открыл Rox File Manager, зашел в папку / и щелкнул правой кнопкой мыши на tmp folder -> Mount Point 'tmp' and clicked properties.

Я заметил, что права доступа были установлены как «Владелец» - «Чтение», «Запись», «Exec», но «Группа» и «Мир» были установлены только на «Чтение» и «Exec», а не «Запись». Я поставил галочку в поле «Запись» как для группы, так и для мира, и теперь PHP снова работает нормально.

Я не знаю, в какой момент разрешения для tmp должны были измениться, но для того, чтобы PHP мог их использовать, должны быть установлены разрешения на запись.

1 голос
/ 07 февраля 2016

Добавить следующую строку

ini_set('session.save_path', getcwd() . '/tmp');

до

session_start(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...