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

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

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

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

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

Ответы [ 15 ]

1 голос
/ 22 декабря 2015

если вы используете Apache веб-сервер, быстрое решение - перейти к командной строке и набрать:

open /etc/apache2/

, затем в открывшемся окне открыть файл с именем httpd.conf и выполнить поиск.для User или Group измените эти 2 строки на:

User  _www
Group _www

Это потому, что вы хотите, чтобы у вашего сервера были разрешения на доступ к системным каталогам, особенно если вы хотите изменить User, или вы можетеоставьте свой Group на staff или admin.

1 голос
/ 16 апреля 2014

Если:

  • session.gc_probability> 0
  • файлы сессий создаются разными пользователями (например, root и apache).
  • все файлы сессий хранятся в одном месте (например, / var / lib / php / session)

Тогда вы увидите эту ошибку, например, когда PHP-процесс Apache пытается запустить сборку мусора для файлов сеанса.

Исправления:

  1. Переконфигурируйте PHP так, чтобы gc_probability было 0, и имейте задачу cron, удаляющую старые / устаревшие файлы.
  2. Пусть каждый отдельный пользователь сохранит свои файлы сеансов в отдельных местах (session_save_path () и т. Д.).
0 голосов
/ 10 июня 2017

Использование PHP 5.6 Я уже использовал session_save_path (), чтобы указывать на каталог в структуре домена.Он работал нормально, пока я не обновился до PHP 7.0, когда я получил отмеченную ошибку.На PHP.net я обнаружил несколько комментариев, в которых указывалось, что назначение прямого пути не всегда работает, поэтому я использовал их предложение.

session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));

работал отлично.Не забудьте изменить /../session на относительное местоположение вашего фактического каталога сеанса.

0 голосов
/ 09 декабря 2016

У меня изначально была эта проблема из-за того, что nginx владел местоположением / tmp, а php-fpm работал под пользователем и группой 'apache' из-за www.conf.Я поменял пользователя / группу в этом файле, а затем все заработало.Вы можете проверить <?php echo exec('whoami'); ?> для подтверждения.

0 голосов
/ 25 августа 2016

Для меня проблема, кажется, ошибка WHM! У меня есть куча надстроек на доменах, и все работает нормально, но с поддоменом это приводит к этой ошибке.

Странная вещь, но если я использую полный URL с основным доменом, он работает нормально:

main-domain.com / my.subdomain.com

Если я использую субдомен напрямую, это выдает «Отказано в доступе (13)»:

my.subdomain.com

Дело в том, что все корневые домены аддонов:

/ дом / хх /

Но для моего субдомена не знаю почему, корень: (У меня не должно быть доступа к этому каталогу)

/

Так что он действительно пытается достичь: / tmp вместо / home / xx / tmp

Который также существует, но не имеет необходимых разрешений

Для пояснения приведем примеры всего пути:

/ дом / мой-счет / public_html

/ дом / мой-счет / TMP

/ TMP

Обходной путь, который я использовал:

session_save_path ( '/ дом / мой-счет / TMP');

session_start (); * 1 036 *

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