【问题标题】:how to use session_start() properly on GoDaddy site如何在 GoDaddy 网站上正确使用 session_start()
【发布时间】: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(); 之前可以生成输出的位置,就像那里的情况一样,我错过了什么?

标签: php session post


【解决方案1】:

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

有问题的目录是:

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

此位置在PHP.ini 中设置为session.save_path

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

【讨论】:

  • 很好,他们是前 5 个字符,没有空格或其他任何内容
  • 肯定是这样,但我似乎无法正确更改目标文件夹。你介意看看我的编辑吗?
  • 在我的例子中,路径中有一个 html。所以在你的例子中,它是/var/chroot/home/content/08/10125908/html/tmp/
【解决方案2】:

问题是 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/

【讨论】:

  • 这是问题所在,但您发布的链接似乎并不那么相关
【解决方案3】:

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

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

【讨论】:

    【解决方案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 目录问题后立即修复。

    【讨论】:

    • 这绝对是问题谢谢,我正在尝试按照您的建议更改目标文件夹,但遇到问题您介意看看我的编辑吗?
    • 是您的本地机器还是托管服务器?你能做print phpinfo(); 看看 session.save_path 是否已更改?你说你在php.ini中设置了session_save_path,但是它的名字是错误的。 session.save_path -- 右边那个,'session'后面有个逗号
    • 如果它是主机,那么您可能需要就此联系您的主机提供商。你可能不允许碰这个值。
    • 知道了,是的,我用session.save_pathsession_save_path 都试过了,因为我在网上的其他地方看到了session_save_path,觉得值得一试。它是一个托管网站,所以我想我打电话给他们,谢谢你的帮助!
    • 做梦也没想到:P,再次感谢!
    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 2015-12-08
      • 1970-01-01
      • 2019-09-06
      • 2018-05-02
      • 2010-10-18
      • 2018-10-22
      • 2021-11-22
      • 2021-07-26
      • 2011-09-19
      相关资源
      最近更新 更多