PHP - / tmp权限错误

时间:2013-12-11 20:40:35

标签: php .htaccess session 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 个答案:

答案 0 :(得分:0)

我想我记得有些php.ini设置会阻止访问不在webserver目录树中的文件。我不知道这是否适用于由php内部生成的文件。

如果你在Red Hat Enterprise linux上运行,或者像CentOs或Scientific Linux这样的衍生品,它也可能是selinux的一个问题。如果将selinux设置为permissive(sudo setenforce Permissive),请检查问题是否消失。如果“修复”了这个问题,请考虑将selinux留在Permissive模式,特别是如果您的服务器可以从互联网上访问,那么最好了解selinux和重新标记。

答案 1 :(得分:0)

嗯,原来它与浏览器有关。 当我在FireFox中测试它时,没问题。 在谷歌浏览器中,存在很大问题。

我不知道它是什么,但删除缓存,cookie,我的网站上的所有内容,它完美地工作。似乎它正在寻找旧会议。