【发布时间】:2013-01-14 07:16:52
【问题描述】:
在下方修复我的问题与“已发送”的标头无关。这只是问题的一个症状。 问题最终成为 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。显然,该文件夹没有与我网站的其他部分一起迁移,而且你不能更改默认文件夹。至少在我的网站上不会。
【问题讨论】:
-
我在搜索中看到了该帖子,但在我的代码中看不到在我调用 session_start(); 之前可以生成输出的位置,就像那里的情况一样,我错过了什么?