Ошибка разрешения PHP - /tmp
В основном у меня есть .htaccess
файл, с php_value session.auto_start
установлен в 1
, Так что мой сеанс начнется в любом файле.
Тем не менее, теперь у меня есть сценарий в моем /functions
папку, но выдает ошибку о разрешениях /tmp
, в результате чего "Failed to write session data"
хотя он не использует, запускает или делает что-либо с сеансом.
Все же это вызывает ошибку, и мне кажется, что он не может найти /tmp
папка, которая у меня есть. Файлы прямо в моей корневой папке (/
не имеет этой проблемы.
Я также попытался установить права доступа /tmp
в 777
, но безрезультатно.
заранее спасибо
Я получаю ошибку
Warning: Unknown: open(/tmp/sess_cfed7db100fd58b62eaca2a519ebaf7a, O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
Сам скрипт:
<?php
define ('INCLUDE_CHECK',true);
require('connect.php'); //This file doesn't use any sessions as well
if(isset($_POST['signupemail'])){
$email = mysqli_real_escape_string($link, $_POST['signupemail']);
$thearray = mysqli_fetch_array(mysqli_query($link, "SELECT COUNT(*) FROM `users` WHERE email=\"".$email."\""));
if($thearray[0] > 0){
echo '"This emailaddress is already in use"';
exit;
}
echo "true";
} else if(isset($_POST['uname'])){
if(!preg_match('/^[a-zA-Z0-9_-]{3,16}$/ ',$_POST['uname'])){
echo '"<small>Please only use alphanumeric characters, underscores and hyphens</small>"';
exit;
}
$uname = mysqli_real_escape_string($link, $_POST['uname']);
$thearray = mysqli_fetch_array(mysqli_query($link, "SELECT COUNT(*) FROM `users` WHERE uname=\"".$uname."\""));
$forbiddennames = array(1 => 'super-user','superuser', 'root', 'admin', 'administrator', 'system', 'website', 'site', 'owner', 'manager', 'founder','moderator');
if(in_array(strtolower($_POST['uname']), $forbiddennames)) {
echo '"'.$_POST['uname'].' is a forbidden username"';
exit;
}
if($thearray[0] > 0){
echo '"This username is already in use, please choose another"';
exit;
}
echo "true";
}
?>
Я получаю сообщение об ошибке, когда просто перехожу к своему сценарию вручную, поэтому без каких-либо $_POST
параметры установлены. Я использую этот скрипт для проверки своей электронной почты и / или пароля, и при проверке он останавливается, не зная, что делать с результатом (получено от AJAX
).
2 ответа
Я думаю, что помню некоторые настройки php.ini, которые запрещают доступ к файлам, которых нет в дереве каталогов веб-сервера. Я не знаю, относится ли это к файлам, которые создаются внутри php, хотя.
Если вы работаете в Red Hat Enterprise linux или на каком-либо из его производных, таких как CentO или Scientific Linux, это также может быть проблемой с selinux. Проверьте, исчезла ли проблема, если вы установили selinux в permissive (sudo setenforce Permissive). Если это "решает" проблему, подумайте дважды о том, чтобы оставить selinux в разрешающем режиме, особенно если ваш сервер доступен из Интернета, лучше узнать о selinux и перемаркировке.
Хм, это было связано с браузером. Когда я тестировал его в FireFox, проблем не было. В Google Chrome большая проблема.
Я не знаю, что это было, но после удаления кеша, куки, всего с моего сайта все заработало отлично. Похоже, он искал старую сессию.