PHP session_start错误(找不到文件或目录)

3
我是一名新手PHP开发者,我正在尝试创建一个登录系统,其中用户名通过session存储在PHP cookie中。因此,通过视频教程,我学习到使用session_start()来启动cookie session,然后根据满足的条件设置变量。我正在使用XAMPP测试我的PHP,所以当我加载页面时,我会收到以下错误:
警告:session_start()[function.session-start]:open(Desktop \ xampp \ tmp \ sess_5bre7v153kb1hoftovugl77o52,O_RDWR)失败:找不到文件或目录(2)位于C:\ Users ------ \ Desktop \ xampp \ htdocs [folder] \ checkLogin.php的第2行
警告:session_start()[function.session-start]:无法发送会话cookie - 标头已经由(C:\ Users ---- \ Desktop \ xampp \ htdocs [folder] \ checkLogin.php:2)发送在C:\ Users ---- \ Desktop上的checkLogin.php的第2行]\xampp\htdocs [folder]
警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 标头已经发送(输出已从C:\ Users ---- \ Desktop \ xampp \ htdocs [Folder] \ checkLogin.php: 2开始)在C:\ Users ---- \ Desktop \ xampp \ htdocs [Folder] ] \ checkLogin.php的第二行。
警告:无法修改标头信息 - 标头已经由(C:\ Users ---- \ Desktop \ xampp \ htdocs [Folder] \ checkLogin.php:2)发送在C:\ Users ---- \ Desktop上的checkLogin.php的第19行]\xampp\htdocs[Folder]
警告:未知:打开(---- \ Desktop \ xampp \ tmp \ sess_5bre7v153kb1hoftovugl77o52,O_RDWR)失败:找不到文件或目录(2)位于未知的第0行
警告:未知:无法写入会话数据(文件)。请验证session.save_path的当前设置是否正确(---- \ Desktop \ xampp \ tmp )位于未知的第0行。
我的XAMPP文件中确实有一个临时文件夹,在那里指定不要删除此文件夹,因为它必须存在于PHP中创建会话中。以下是我的PHP代码:
    <?php
session_start ();
if (isset($_POST["submit"])) {
  $username = $_POST["username"];
  $password = $_POST["password"];
  $check = false;
  $information = fopen("user_information.txt", "r");
  while (!feof($information)) {
    $content = explode(":", rtrim(fgets($information, 1024)));
    if ($username == $content[0] && ($password) == $content[1]) {
         $check = true;
         break;
    }
  }
  fclose($information);

  if ($check) {
     define('BASE_URL', 'index.php');
     header('Location: ' . BASE_URL);
     $SESSION["username"] = $username;
    }
  else {
     define('BASE_URL', 'login.php');
     header('Location: ' . BASE_URL);
  }
    }
?>

谢谢你。

1
如果您将Apache作为服务运行,它很可能没有权限写入您的桌面。您应该将Xampp移动到其他位置。 - Álvaro González
你检查过Apache是否有该目录的写入权限了吗? - SteJ
有没有办法我可以做到这一点?谢谢!另外,我无法访问任何需要管理员权限的内容... - arthrax
1个回答

6

这是一个配置错误。

请检查您的php.ini文件中以下行:

session.save_path = "/tmp"

或者在你的PHP脚本中:

session_save_path('/home/example.com/sessions');

这行代码告诉PHP会话文件将保存在哪里。

运行服务器的系统用户需要对此文件夹拥有写权限。


session.save_path = "/tmp/" - Exp3rt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接