2

修复下面我的问题与“已经发送”的标题无关。这只是问题的一个症状。该问题最终成为 GoDaddy 的服务器端问题,因为他们最终缺少一个文件夹。

我已经编辑了我的问题名称以包含“GoDaddy 站点”,以帮助将来遇到同样问题的人。

根据@KennyPowers 的建议,我打电话给 Go Daddy。我最初有一个 Windows 托管帐户并切换到 linux。显然,session_start()默认情况下保存到的文件夹没有随我网站的其他部分迁移,而且你不能更改默认文件夹..至少在我的网站上没有。

GoDaddy 替换了最后的文件夹,现在一切正常


原始问题:

我可以使用session_start()提供一些帮助

网站流量:

  • page1.html有一个POST 到 page2.php的表单
  • page2.php对数据进行一些处理并提供指向 page3.php 的链接
  • page3.php加载时,它还需要对表单中的数据做一些事情

所有页面都在同一个域上,所以我尝试使用 session_start()

这是我尝试过的:

第2页:

<?php
// page2.php

session_start();

echo 'Welcome to page #2';

$_SESSION["guest1Last"] = $_POST["guest1Last"];
$_SESSION["guest1First"] = $_POST["guest1First"];
$_SESSION["guest1Middle"] = $_POST ["guest1Middle"];

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
// more HTML and PHP stuff down here

第 3 页:

<?php
// page3.php

session_start();

echo 'Welcome to page #3<br />';


echo $_SESSION["guest1First"];  
echo $_SESSION["guest1Middle"];
echo $_SESSION["guest1Last"]; 

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
// more HTML and PHP stuff down here

这些是我在第 2 页加载时收到的警告:(第 3 页 相同)


Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) in /home/content/08/10125908/html/_php/page2.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/08/10125908/html/_php/page2.php:4) in /home/content/08/10125908/html/_php/page2.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/08/10125908/html/_php/page2.php:4) in /home/content/08/10125908/html/_php/page2.php on line 4
Welcome to page #2





Warning: Unknown: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) 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 () in Unknown on line 0

标头已发送”部分让我认为 session_start() 不在页面上的正确位置,但它位于我认为应该在的顶部。也就是说,出于显而易见的原因,“没有这样的文件或目录”很可能是问题的开始。如果有人能指出我做错的方向,我将不胜感激。

编辑


<?php
session_start();
ini_set('session.save_path', '/var/chroot/home/content/08/10125908/html/tmp');
echo 'Welcome to page #1';

$_SESSION["guest1Last"] = $_POST["guest1Last"];
$_SESSION["guest1First"] = $_POST["guest1First"];
$_SESSION["guest1Middle"] = $_POST ["guest1Middle"];



?>
  • 我创建了一个文件夹 tmp 并赋予它所有权限
  • 我添加了ini_set('session.save_path', '/var/chroot/home/content/08/10125908/html/tmp');
  • 并尝试了 ini_set('session.save_path', 'html/tmp');
  • 我还创建了一个文本文件并将 session_save_path('/home/content/04/8260904/html/tmp'); 其保存为php.ini并将其上传到我的根目录
  • 我还创建了一个文本文件并将
    session_save_path('/home/content/04/8260904/html/tmp'); 其保存
    php5.ini并将其上传到我的根目录

我仍然遇到同样的错误

 Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3659a32a50e33e5f918a9e39d70a1668, O_RDWR) failed: No such file or directory  

我没有正确设置文件夹目标吗?


我的文件夹设置现在 在此处输入图像描述

根据@KennyPowers 的建议,我打电话给 Go Daddy。我最初有一个 Windows 托管帐户并切换到 linux。显然,该文件夹没有随我网站的其他部分一起迁移,而且你不能更改默认文件夹..至少在我的网站上没有。

4

5 回答 5

4

你的问题是你没有 tmp. 第一个错误说明了这一点:

Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) in /home/content/08/10125908/html/_php/page2.php on line 4

这就是会话无法开始的原因。请参阅“ ...失败:没有这样的文件或目录 (2) in..

您需要/var/chroot/home/content/08/10125908/tmp/在该目录上创建并设置读/写权限。您可以使用 php 脚本中的下一个函数更改会话临时目录:

ini_set('session.save_path', '/session/directory/goes/here');

在此之后收到的警告告诉您有一些数据发送回您的浏览器 - 这实际上是第一个警告文本。修复 tmp 目录问题后,它将立即修复。

于 2013-01-30T13:08:24.737 回答
1

PHP 试图用来存储会话信息的目录不存在或不可写。

有问题的目录是:

/var/chroot/home/content/08/10125908/tmp/

此位置设置PHP.inisession.save_path

您需要确保此目录存在并且可由运行 PHP 的用户写入。

于 2013-01-30T13:01:29.730 回答
1

PHP 在将数据写入会话文件时出现问题。您应该检查您的会话设置并验证是否在文件系统端设置了必要的权限。

Warning: session_start() [function.session-start]: open(/var/chroot/home/content/08/10125908/tmp/sess_3dt4c7etqd6hr28dls0bludiv4, O_RDWR) failed: No such file or directory (2) in /home/content/08/10125908/html/_php/page2.php on line 4

关于标头已发送错误:由于您的错误报告级别,在尝试写入会话数据时生成了警告。此自动生成的警告是标头已发送错误的触发器。修复权限问题,它应该会消失。

于 2013-01-30T13:08:26.450 回答
0

session_start();您可能在请检查任何文本之前有一些输出(包括 . 之前的空格session_start();。它应该是您文档中的第一个。

于 2013-01-30T13:00:34.903 回答
0

问题是 PHP 会话当前无法在您的服务器上运行,并且无法设置 cookie。PHP 服务器不允许会话启动,错误是您发现的方式。该错误告诉您它无法打开所需的会话临时文件夹,因为该文件夹不存在。

请检查此链接: http ://tclayson.com/2012/03/08/how-to-fix-error-warning-session_start-function-session-start-openpathtofile-o_rdwr-failed-permission-denied-13-in -pathtoscript-php-on- line- line -2/

于 2013-01-30T13:13:49.677 回答