когда я загрузил сценарий на сервер, я получил эту ошибку
Предупреждение: Неизвестно: open (/ tmp / sess_58f54ee6a828f04116c2ed97664497b2, O_RDWR) не удалось: разрешение отклонено (13) в Unknown в строке 0
- Проблема PHP Curl и setcookie
- Шифрование RSA от C # до PHP
- Drupal: как я могу удалить ссылки из таксономических терминов?
- Фильтровать значения из массива в PHP
- Как вызвать внешние веб-службы PHP с помощью WSO2 ESB
Предупреждение: Неизвестно: Не удалось записать данные сеанса (файлы). Убедитесь, что текущая настройка session.save_path верна (/ tmp) в Unknown в строке 0
ошибка появилась, когда я вызываю session_start();
хотя я установил разрешение папки / tmp на 777.
Изменить путь к сеансу, в котором вы можете написать данные или обратиться к администратору сервера о проблеме / tmp
вам нужно будет изменить директиву session.save_path
php.ini
Вы можете сделать это, используя session_save_path
Если у вас есть доступ к SSH, вот как исправить разрешение и право собственности
sudo chown -R NAME_OF_USER /tmp
Замените пользователя NAME_OF_USER, под которым запускается php. Вы можете найти его, просто поместив эти строки в файл php:
$processUser = posix_getpwuid(posix_geteuid()); print $processUser['name']; exit;
Кроме того, вы можете использовать ini_set('session.save_path', '/dir/here');
предполагая, что у вас есть доступ к этой функции. Другие предложенные способы действительны.
У меня была точно такая же проблема с одним из моих PHP-скриптов, и я был похож на то, что я сломал, потому что он работал отлично за день до этого, и я запускаю его с моей собственной локальной машины Puppy Linux, так что это даже не хост или что-нибудь.
Единственное, что я делал до этого, это попытка заставить Java работать в веб-браузере, поэтому некоторые из них, как мне удалось заставить Java работать, но сломали PHP – oops!
Во всяком случае, я помнил, что, пытаясь заставить Java работать, я удалил содержимое папки / tmp, чтобы стереть что-нибудь, что может вызвать проблемы (на самом деле это получилось с помощью Java. Я использовал старый плагин oij с новым Firefox )
Чтобы решить эту проблему, я открыл Диспетчер файлов Rox, перешел в папку / и щелкнул правой кнопкой мыши по folder -> Mount Point 'tmp' and clicked properties
tmp folder -> Mount Point 'tmp' and clicked properties
.
Я заметил, что разрешения были установлены как Owner – Read, Write, Exec, но Group и World были установлены только в Read и Exec, а не в Write. Я поставил галочку в Write для группы и мира, и теперь PHP снова работает отлично.
Я не знаю, в какой момент разрешения для tmp должны были измениться, но для использования PHP они должны иметь права на запись.
Убедитесь, что вы не сталкиваетесь с проблемами дискового пространства. Если все разрешения правильны (и 777 должны сделать это за вас), вы все равно можете получить эту ошибку (для некоторых версий PHP и Apache), если на диске недостаточно места для записи.
У меня была эта проблема в следующей ситуации:
Вывод: по какой-то неуместной причине мне пришлось изменить мою версию PHP, и при переключении с сеансами вживую, сеансы будут повреждены.
Я понимаю, что это старый пост, однако я просто столкнулся с этой проблемой и нашел легкое решение.
Для меня проблема произошла с одним из моих сайтов, развернутых локально. Я не пробовал обращаться к сайтам с использованием других браузеров, но это происходило каждый раз, когда я пытался получить доступ к этому сайту через Chrome. Я решил войти в инструменты разработчика Chrome, на вкладке приложения, и щелкнуть «Очистить хранилище». Вуала – все снова работает как волшебство.
Надеюсь, это поможет кому-то еще!
Добавить следующую строку
ini_set('session.save_path', getcwd() . '/tmp');
до
session_start();
Если :
Затем вы увидите эту ошибку, если, например, процесс Apache PHP пытается запустить сбор мусора в файлах сеансов.
Исправления:
если вы используете веб-сервер Apache
, быстро исправить это в командной строке и введите:
open /etc/apache2/
затем в открывшемся окне откройте файл httpd.conf
и выполните поиск User
или Group
измените эти две строки на:
User _www Group _www
Это связано с тем, что вы хотите, чтобы ваш сервер имел разрешение на каталоги ваших систем, особенно вы хотите изменить User
или вы можете оставить свою Group
либо staff
либо admin
.
У меня такая же проблема с разрешением, но и в / var / lib / php / session /.
Чтобы исправить это, я удаляю файл и перезапускаю php-fpm.
rm -rf /var/lib/php/session/sess_p930fh0ejjkeeiaes3l4395q96 sudo service php5.6-fpm restart
Теперь все работает хорошо.
Для меня проблема кажется ошибкой WHM! У меня есть куча добавлений в доменах, и все работает нормально, но с субдоменом она приносит эту ошибку.
Странно, но если я использую полный URL-адрес с основным доменом, он отлично работает:
main-domain.com/my.subdomain.com
Если я использую субдомен непосредственно, он приносит «Permission denied (13)»:
my.subdomain.com
Суть в том, что все аддоны домена root:
/ Главная / хх /
Но для моего поддомена, не знаю, почему, корень: (я не должен иметь доступ к этому директорию)
/
Поэтому он действительно пытается достичь: / tmp вместо / home / xx / tmp
Который также существует, но не имеет правильных разрешений
Чтобы прояснить это, это примеры всего пути:
/ Главная / мой-счет / public_html
/ Главная / мой-счет / TMP
/ TMP
Обходной путь, который я использовал, был:
session_save_path ( '/ дом / мой-счет / TMP');
session_start ();
Первоначально у меня была эта проблема из-за того, что nginx владел расположением / tmp, а php-fpm выполнялся под «apache» пользователем и группой из-за http://www.conf. Я поменял пользователь / группу в этом файле, и тогда он работал нормально. Вы можете проверить <?php echo exec('whoami'); ?>
<?php echo exec('whoami'); ?>
для проверки.
Используя PHP 5.6, я уже использовал session_save_path (), чтобы указать на каталог в структуре домена. Он работал нормально, пока я не обновился до PHP 7.0, и в это время я получил отмеченную ошибку. На PHP.net я нашел несколько комментариев, в которых указывалось, что назначение прямого пути не всегда работает, поэтому я использовал их предложение.
session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
работал отлично. Не забудьте изменить /../session
на относительное местоположение вашего фактического каталога сеанса.